在处理大型项目时,编译和启动单元测试框架至少需要10秒钟。有没有有效的方法来缩短反馈循环时间?我打算在测试运行之间对一个单元测试类和另一个类进行少量更改。
我考虑过其他一些方法。我没有看到任何编译和运行单个测试类和依赖项的方法。我可以增加解决方案中的项目数量,以便每个程序集花费更少的时间进行编译,但这会导致其他问题。 NCrunch似乎减少了手动运行测试的需要,但它仍然编译完整的程序集。
澄清: 10秒包括编译单元测试类和被测试类的时间。我对NCrunch的问题可能是因为计算机功能不太强大。
答案 0 :(得分:7)
您必须将每个测试类放在一个单独的程序集中 - 程序集实际上是编译单元。如果在仅对测试类进行更改后需要10秒钟重新编译,则表明您在一个程序集中进行了太多测试,或者您的计算机速度非常慢。很可能是获得更好的机器(或改进现有的机器或更多的内存或SSD)是最佳的前进方式。
我自己使用NCrunch,虽然它仍然编译完整的程序集,但它在后台执行它的事实意味着通常在我精神呼吸时,测试已经重建并且正在运行。如果你有多个处理器和一个ramdisk,那么NCrunch运行良好 - 你可以设置它的构建位置,以及它可以使用的处理器数量。
如果您只考虑 NCrunch(或The Mighty Moose等 - 类似的东西)但实际上没有尝试过,那么在假设它不够快之前你应该试一试对你而言。
答案 1 :(得分:2)
您可以查看AutoTest.Net,这是Visual Studio的一个插件,可以在编写代码时在后台运行您的单元测试。
通过这种方式,您可以将单元测试更像是编译器错误/警告,并获得相对实时的反馈。
答案 2 :(得分:0)
声明性单元测试实际上会将编译时间归零,但前提是您的体系结构允许。例如,将单元测试移动到数据库对于我们在大型项目中运行良好。