NUnit现在为每个包含的测试方法创建测试夹具类的新实例吗?

时间:2011-08-01 22:50:58

标签: unit-testing nunit

正如一本相当古老的书XUnit Patterns所写,NUnit 2.0没有为每个测试创建新的测试装置,因此如果测试操作某些夹具状态,它就会被共享并可能导致各种不良副作用。

这仍然是一样的吗?我试图在官方网站上找到它但失败了,并且暂时没有使用NUnit。

3 个答案:

答案 0 :(得分:17)

为该灯具中的所有测试创建一次灯具。

对于给定的fixture类,FixtureSetup方法对fixture中的所有测试运行一次,并且为每个测试运行一次Setup方法。因此,任何需要重置的状态都应该在Setup方法中完成(或TearDown,它在每次测试结束时运行。)

答案 1 :(得分:4)

我发现这是一个影响我的问题,也发现这个链接为这个问题提供了一些历史记录; https://blogs.msdn.microsoft.com/jamesnewkirk/2004/12/04/why-variables-in-nunit-testfixture-classes-should-be-static

  

我认为在编写NUnit V2.0时遇到的最大问题之一就是不为每个包含的测试方法创建测试夹具类的新实例。

尚未在V3中对此进行测试以确定其是否已更改

答案 2 :(得分:3)

从 3.13 开始,您可以使用

LifeCycle.SingleInstance    A single instance is created and shared for all test cases
LifeCycle.InstancePerTestCase   A new instance is created for each test case

https://docs.nunit.org/articles/nunit/writing-tests/attributes/fixturelifecycle.html