我一直在我的代码库上使用NDepend,而我的实际代码似乎通过了绚丽的色彩,我的单元测试代码可能会使用很多工作。 NDepend提出的建议之一是将我的许多单元测试类转换为静态类,因为测试之间存在高度分离。看起来这似乎有助于不在测试之间共享状态,并允许它们以任何顺序进一步运行。我应该将单元测试类转换为静态类吗?
在同一TestFixture中的测试方法之间共享状态,当然还有TestFixtures之间的共享状态
答案 0 :(得分:1)
如果您的测试不需要按特定顺序运行,或者它们不依赖于初始化代码,则可以将它们设置为静态。
请记住,这不是成功的秘诀。
答案 1 :(得分:0)
趣!我以前从未见过有人将NDepend分析应用于测试项目。虽然单元测试应该被视为代码库的一等公民,但它们通常不与应用程序一起部署,因此不会使用相同的体系结构约束(FxCop,NDepend等)进行查看。在某种程度上,我同意这种方法,需要验证测试的质量,但除了识别生产代码中也会识别的类耦合问题之外,我无法看到工具可以提供的好处。
关于NUnit,它通常为该测试类中的所有测试方法实例化一个testfixture实例。状态是在测试之间共享,这是好事还是坏事。
好:在设置测试夹具时可以设置创建需要时间的状态。
错误:应该在测试之间重置的状态取决于您在测试之间进行修复。
如果NUnit支持测试的静态方法,并且如果在测试夹具中需要任何状态,那么这些字段将需要是静态的。这实际上非常可怕,因为测试状态在测试appDomain的生命周期内共享。
关键是使用NUnit属性进行夹具和测试初始化/拆卸。永远不要使用构造函数或终结器进行夹具初始化,因为无法控制NUnit框架何时创建类。