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

Val*_*zub 21 nunit unit-testing

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

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

Ped*_*dro 17

为该夹具中的所有测试创建一次夹具.

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

  • 请注意,较新版本的 NUnit 将“FixtureSetup”替换为“OneTimeSetUp” (2认同)

Ale*_*osh 9

从 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
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ave 5

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

我认为我们编写 NUnit V2.0 时最大的失误之一是没有为每个包含的测试方法创建测试装置类的新实例。

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

  • 它与 NUnit v3.9 相同(在其所有测试中重用单个夹具实例)。 (5认同)