Nunit没有为每个文本夹具调用一次设置

usr*_*260 3 c# nunit automated-tests

我是Nunit的新手,我正在尝试运行2个测试夹具,A&B.在每个夹具中,我为每个夹具都有一个独特的安装方法.但是,当我在Visual Studio中的"测试资源管理器"中单击"全部运行"时,将调用Fixture A的测试设置(首先执行),并忽略Fixture B的设置.通过命令行运行所有测试时,我也会得到相同的行为.以下是我的代码:

夹具A.

[TestFixture]
public class A
{      
        [SetUp]
        public void SetupTest()
        {
            // ...Setup for Fixture A
        }                

        [Test, Order(1)]
        public void TestForFixtureA()
        {
            // ...perform test
        }
}
Run Code Online (Sandbox Code Playgroud)

夹具B

[TestFixture]
public class B
{      
        [SetUp]
        public void SetupTest()
        {
            // ...Setup for Fixture B
        }                

        [Test]
        public void TestForFixtureB()
        {
            // ...perform test
        }
}
Run Code Online (Sandbox Code Playgroud)

每个Fixture执行Setup方法的正确方法是什么?

Dav*_*tts 5

您在测试夹具级别使用不正确的属性进行设置.您应该使用的属性是[SetUpFixture].有关这方面的信息可以在nunit文档中找到

以下是从文档中获取的所有设置属性及其用法的列表:

  • SetUpAttribute现在专门用于每次测试设置.

  • TearDownAttribute现在专门用于每次测试拆解.

  • OneTimeSetUpAttribute用于每次测试运行的一次性设置.如果运行n次测试,则此事件只会发生一次.

  • OneTimeTearDownAttribute用于每次测试运行的一次性拆卸.如果运行n次测试,则此事件只会发生一次

  • SetUpFixtureAttribute继续像以前一样使用,但具有更改的方法属性.

这似乎并不能解释您所看到的bizzare行为,因为设置应该按测试运行,但使用正确的属性不会有害.

  • 关于`SetUpFixture`的陈述是不正确的.`SetUpFixture`是一个没有anu测试的类,它为__group__的灯具执行设置.它不适用于此处.此外,如果意图是每个夹具只运行一次安装方法,那么`OneTimeSetUp`适用 - 这在问题中没有说明. (2认同)