在C#中,改进单元测试反馈回路的好方法是什么

本文关键字:回路 是什么 方法 单元测试 | 更新日期: 2023-09-27 18:21:11

在处理较大的项目时,编译和启动单元测试框架可能至少需要10秒。是否有有效的方法来减少反馈循环时间?我打算在测试运行之间对一个单元测试类和另一个类进行一些小的更改。

我考虑了其他一些方法。我看不到任何编译和运行单个测试类和依赖项的方法。我可以增加解决方案中的项目数量,这样每个程序集编译所需的时间就会减少,但这会导致其他问题。NCrunch似乎减少了手动运行测试的需要,但它仍然编译完整的程序集。

澄清:这10秒包括编译单元测试类和被测试类的时间。我对NCrunch的问题可能是因为一台功能较弱的计算机。

在C#中,改进单元测试反馈回路的好方法是什么

您必须将每个测试类放在一个单独的程序集中——程序集实际上是编译单元。如果在之后仅对测试类进行更改就需要10秒的时间来重新编译,则表明一个程序集中有太多测试,或者机器速度非常慢。很可能,获得一台更好的机器(或改进现有的具有更多内存或SSD的机器)是最好的前进方向。

我自己使用NCrunch,尽管它仍然编译完整的程序集,但它是在后台进行的,这意味着通常在我深呼吸的时候,测试已经重建并正在运行。顺便说一句,如果你有多个处理器和一个ramdisk,NCrunch运行得很好——你可以设置它的构建位置,以及它可以使用多少处理器。

如果你只考虑过NCrunch(或The Mighty Moose等类似的东西),但没有真正尝试过,你应该先尝试一下,然后再认为它对你来说不够快。

您可以查看AutoTest.Net,它是Visual Studio的一个插件,在编写代码时在后台运行单元测试。

通过这种方式,您可以将单元测试视为编译器错误/警告,并获得相对实时的反馈。

声明式单元测试将有效地减少编译时间,但前提是您的体系结构允许。例如,在大型项目中,将单元测试转移到数据库对我们来说效果很好。