【发布时间】:2018-12-04 18:30:30
【问题描述】:
使用 Visual Studio 2017 NUnit 和 resharper 测试运行器,在大型 c# 项目(5000+)测试中进行 TDD 时如何保持良好的单元测试速度。即使每个测试只需要 5 毫秒,也就是 25 秒,这对于一个 TDD 周期来说是相当慢的。
我们的测试不调用数据库,也不调用外部 Web 服务。他们只测试业务逻辑。
我发现使用最小起订量,单独执行 Mock.Setup() 几乎需要 1 毫秒。由于每个测试我们可能有一些最小起订量设置调用,这是我们缓慢的单元测试的主要罪魁祸首。
有什么方法可以加快单元测试的速度吗?有没有比 moq 更快的模拟库?或者也许是另一个更快的测试运行器?
【问题讨论】:
-
25s 进行 5000 次测试是相当合理的,无论如何在我看来。一种方法是将您的解决方案分解,也许将通用/基础设施的东西放入可重用的 NuGet 包中。这样总的单元测试时间不会减少,但开发人员通常会一次处理一个组件。
-
我会先说我从未做过 TDD,但我经常进行单元测试。在我的阅读中,我总是从“测试应该快速运行”中得到的印象是,测试不应该花费几个小时,甚至几分钟来运行。长时间运行的测试鼓励不运行测试。等待 25 秒并不长,IMO。
-
您使用的是哪个测试框架?有些支持并行运行测试。
-
这是个好主意,我正在使用 Nunit,它确实支持并行测试,我会尝试一下,谢谢!
-
大多数 NUnit 运行程序还支持仅运行受影响的测试,因此每次更改都不应该在 5000 附近运行。 NCrunch 是 TDD 的一个非常棒的工具,特别是对于较小的解决方案,因为它根据测试结果在您键入时实时注释您的代码。不过不是免费的。
标签: c# visual-studio unit-testing tdd resharper