具有不同名称空间的 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
是否可以为整个程序集设置一个 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