标签: tdd

单元测试/ TDD的有用设计模式?

阅读这个问题有助于我巩固我在单元测试,TDD等方面遇到的一些问题.

由于遇到了TDD开发方法,我知道这是正确的发展方向.阅读各种教程帮助我了解如何开始,但它们一直非常简单 - 不是真正可以应用于活动项目的东西.我所管理的最好的是围绕我的代码的一小部分编写测试 - 像库这样的东西,主应用程序使用但没有以任何方式集成.虽然这很有用,但相当于约5%的代码库.关于如何进入下一步,帮助我对主应用程序进行一些测试的问题很少.

诸如" 大多数没有单元测试的代码都是用硬依赖(即全新的)或静态方法构建的. "和" ......在类之间具有高级别的耦合,难以配置的情况并不罕见你班级内的对象等等. "让我意识到下一步是理解如何解码代码以使其可测试.

我该怎么做才能帮助我做到这一点?是否有一组特定的设计模式需要我们理解并开始实施,这样可以更轻松地进行测试?

testing tdd unit-testing design-patterns

48
推荐指数
5
解决办法
3万
查看次数

如何对使用FormsAuthentication的ASP.NET MVC控制器进行单元测试?

我正在以测试驱动的方式使用ASP.NET MVC解决方案,我想使用表单身份验证将用户登录到我的应用程序.我想在控制器中得到的代码看起来像这样:

FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何编写测试来证明这段代码的合理性?

有没有办法检查使用正确的参数调用SetAuthCookie方法?

有没有办法注入假/模拟FormsAuthentication?

tdd asp.net-mvc unit-testing forms-authentication mocking

47
推荐指数
1
解决办法
1万
查看次数

PHPUnit测试的"Web界面"?

是否有一个简单的"Web界面"来运行PHPUnit测试套件?即在命令行上运行测试的PHP脚本,并输出格式良好的HTML结果.

我开发Web应用程序,日常工作流程通常在IDE和浏览器之间切换.我想在同一环境中进行单元测试.

我正在寻找一些非常简单且基于PHP的东西 - 我打算进入phpUnderControl(它具有我正在寻找的功能)但还没有.

php tdd phpunit unit-testing

47
推荐指数
5
解决办法
2万
查看次数

怎么写django测试意味着失败?

我有一个名为Thingwith called 的模型name,我希望name为char字段,只有 3个字符长.

我该怎么写测试?

class TestCase1(TestCase):
    def test1(self):
        thing = Thing(name='1234')
Run Code Online (Sandbox Code Playgroud)

那个测试应该失败.如何正确编写测试以便在该对象失败时测试通过

testing django tdd

47
推荐指数
3
解决办法
3万
查看次数

我如何对持久性进行单元测试?

作为实践测试驱动开发的新手,我常常陷入困境,如何将持久性单元测试数据库.

我知道技术上这将是一个集成测试(不是单元测试),但我想找到以下最佳策略:

  1. 测试查询.
  2. 测试插页.我如何知道插件出现故障?我可以通过插入然后查询来测试它,但是我怎么知道查询没有错呢?
  3. 测试更新和删除 - 与测试插入相同

这些最佳做法是什么?


关于测试SQL:我知道这可以做到,但如果我使用像NHibernate这样的O/R Mapper,它会在用于输出查询的别名中附加一些命名瑕疵,因为这有点不可预测我不确定我可以测试一下.

我应该放弃一切,只是信任NHibernate吗?我不确定这是谨慎的.

sql-server tdd unit-testing

46
推荐指数
2
解决办法
5727
查看次数

使用Rhino.Mocks模拟静态方法

是否可以使用Rhino.Mocks模拟静态方法?如果Rhino不支持这个,是否有一种模式或某种东西可以让我做到这一点?

c# tdd rhino-mocks mocking

46
推荐指数
3
解决办法
3万
查看次数

什么是演示TDD的好示例类?

我需要对测试驱动开发进行简短的演示(2-4小时),并且需要提出一个我可以使用TDD方法构建的小类.该课程必须相对较小,但"出售"TDD的概念.

如果有人读过James Newkirk的书,即Microsoft.Net中的测试驱动开发,那么Stack的例子就是完美的.它是一个小类,有一个可管理的测试/要求列表,创建过程销售TDD(恕我直言).

我不想使用Stack示例或类似的数据结构(队列,列表等)来担心影响Newkirk的工作.

所以,我正在为样本课寻找一些好主意.

谢谢.

tdd

46
推荐指数
3
解决办法
2万
查看次数

TDD:它是否妨碍了良好的API设计?

我从来没有写过TDD代码,但我在SO上已经看过很多关于它的讨论.我最担心的是,似乎一般良好的API设计(灵活性,易用性,界面简洁性和性能)有时会使代码可模仿,超模块超出任何API使用所需的范围例如,TDD支持者经常建议将事物作为参数传递,从API抽象的角度来看,被调用的方法应该"只知道",或者以一种使测试变得简单的方式考虑类和方法,这不一定是最能与问题领域相关的方式.

对于TDD和API设计更有经验的人:您是否发现TDD经常妨碍良好的API设计?如果是这样,你怎么反击这个?

api tdd

46
推荐指数
6
解决办法
2734
查看次数

Python unittest:以编程方式生成多个测试?

可能重复:
如何在python中生成动态(参数化)单元测试?

我有一个测试函数under_test,和一组预期的输入/输出对:

[
(2, 332),
(234, 99213),
(9, 3),
# ...
]
Run Code Online (Sandbox Code Playgroud)

我希望这些输入/输出对中的每一个都能用自己的test_*方法进行测试.那可能吗?

这是我想要的,但强制每个输入/输出对进入一个测试:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        self.expected_pairs = [(23, 55), (4, 32)]

    def test_expected(self):
        for exp in self.expected_pairs:
            self.assertEqual(under_test(exp[0]), exp[1])

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

(另外,我真的想把这个定义放进self.expected_pairssetUp吗?)

更新:尝试doublep的建议:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        expected_pairs = [
                          (2, 3),
                          (42, 11),
                          (3, None),
                          (31, 99),
                         ]

        for k, pair in expected_pairs:
            setattr(TestPreReqs, 'test_expected_%d' % k, create_test(pair))

    def create_test (pair): …
Run Code Online (Sandbox Code Playgroud)

python tdd unit-testing

46
推荐指数
5
解决办法
3万
查看次数

实体框架4.1的假DbContext测试

我正在使用本教程伪造我的DbContext并测试:http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic -repository /

但我必须更改FakeMainModuleContext实现以在我的控制器中使用:

public class FakeQuestiona2011Context : IQuestiona2011Context
{
    private IDbSet<Credencial> _credencial;
    private IDbSet<Perfil> _perfil;
    private IDbSet<Apurador> _apurador;
    private IDbSet<Entrevistado> _entrevistado;
    private IDbSet<Setor> _setor;
    private IDbSet<Secretaria> _secretaria;
    private IDbSet<Pesquisa> _pesquisa;
    private IDbSet<Pergunta> _pergunta;
    private IDbSet<Resposta> _resposta;

    public IDbSet<Credencial> Credencial { get { return _credencial ?? (_credencial = new FakeDbSet<Credencial>()); } set { } }
    public IDbSet<Perfil> Perfil { get { return _perfil ?? (_perfil = new FakeDbSet<Perfil>()); } set { } }
    public IDbSet<Apurador> Apurador { get …
Run Code Online (Sandbox Code Playgroud)

.net tdd asp.net-mvc unit-testing entity-framework

46
推荐指数
3
解决办法
3万
查看次数