具有不同名称空间的 NUnit 全局设置

NUnit global setup with different namespaces

是否可以为整个程序集设置一个 NUnit OneTimeSetUp?

在我的项目中,我有一个位于命名空间 MyProject.Tests.Basics 中的 BaseTest class,并且我有一个包含 [OneTimeSetUp] 方法的设置 class。 SetUp class 在命名空间 MyProject.Tests

当我 运行 派生自 BaseTest class 的测试时,例如在命名空间 MyProject.Tests.Data 中,则不会调用 OneTimeSetUp 方法。但是,当我将 SetUp class 的命名空间更改为测试 class 的命名空间时,该方法就可以正常调用,但当然只针对此特定测试 class。

所以我的问题是,如何实现适用于整个程序集的设置 Class?

这是我的代码示例:

设置 class:

namespace MyProject.Tests
{
    [SetUpFixture]
    public class SetUp
    {
        [OneTimeSetUp]
        public void Setup()
        {
            ...
        }
    }
}

基础测试:

namespace MyProject.Tests.Basics
{
    [TestFixture]
    public abstract class BaseTest
    {
        public BaseTest()
        {
            ...
        }
    }
}

测试class:

namespace MyProject.Tests.Data.IO.Files.DataFiles
{
    public class ExampleTest: BaseTest
    {
        [Test]
        public void Example()
        {
            ...
        }
    }
}

为此,请将您的 SetUpFixture class 放在全局命名空间中,即不要将其放在任何命名空间中。

这在 NUnit 文档中记录如下:

A SetUpFixture outside of any namespace provides SetUp and TearDown for the entire assembly.

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