7

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

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

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

4

3 回答 3

7

您必须将每个测试类放在一个单独的程序集中 - 程序集实际上是编译单元。如果更改测试类后重新编译需要 10 秒,则表明您在一个程序集中进行了太多测试,或者您的机器非常慢。获得更好的机器(或使用更多内存或 SSD 改进现有机器)很可能是最好的前进方式。

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

如果您只考虑过 NCrunch(或The Mighty Moose等类似的东西)但没有实际尝试过,那么您应该先试一试,然后再假设它对您来说不够快。

于 2012-01-24T13:58:53.227 回答
2

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

这样,您可以将单元测试更像是编译器错误/警告,并获得相对实时的反馈。

于 2012-01-24T13:51:29.693 回答
0

声明式单元测试可以有效地将编译时间归零,但前提是您的架构允许。例如,将单元测试移至数据库对我们来说在一个大型项目中效果很好。

于 2012-01-24T13:57:52.080 回答