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

在C#中,改进单元测试反馈循环的好方法是什么?,c#,unit-testing,feedback-loop,C#,Unit Testing,Feedback Loop,在处理较大的项目时,编译和启动单元测试框架至少需要10秒钟。是否有有效的方法来减少反馈循环时间?我打算在测试运行之间对一个单元测试类和另一个类进行一些小的更改 我考虑了其他一些方法。我看不到任何编译和运行单个测试类和依赖项的方法。我可以增加解决方案中的项目数量,这样每个程序集的编译时间就会减少,但这会导致其他问题。NCrunch似乎减少了手动运行测试的需要,但它仍然编译完整的程序集 澄清: 这10秒包括编译单元测试类和被测试类的时间。我对NCrunch的问题可能是因为一台功能不太强大的计算机。您

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

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

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

您可以查看它,它是Visual Studio的一个附加组件,在编写代码时在后台运行单元测试


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

声明性单元测试将有效地减少编译时间,但前提是您的体系结构允许。例如,在一个大型项目中,将单元测试移动到数据库非常有效。

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

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


如果你只考虑过NCrunch(或其他类似的东西),但实际上没有尝试过,那么在你认为它不够快之前,你应该试一试。

有一点我不清楚。这10秒钟是在被测课程发生变化之后。我试过NCrunch,但我觉得我的电脑没电了。我用了NCrunch,它运行很平稳。当然,我有一台最新的电脑和一台SSD。@BenMaddox:你的机器有什么规格,改进它有多现实?@JonSkeet,每个月都有变化。迄今为止最好的笔记本电脑是一款具有4 GB内存和7200 RPM硬盘驱动器的酷睿2四核笔记本电脑。这些机器属于客户机,所以我对它们的改进能力很低。@BenMaddox:这可能很值得与您的客户提前交流:“我的编码效率取决于我提供的硬件”。我仍将对正在测试的类进行更改。我从未考虑过将单元测试移动到数据库中。是的,如果只添加新的测试,将会有一个改进。