[英]How to run OneTimeSetUp and OneTimeTearDown from external class
[英]NUnit 3.13.3 does not run OneTimeSetup and OneTimeTeardown in SetupFixture of TestFixture derived class assembly
我有一个 TestFixture 类,它派生自位于与 TestFixture 类的程序集不同的程序集中的基类。 基类程序集包含一个位于任何命名空间之外的 SetupFixture 类。 我期望 SetupFixture 的 OneTimeSetup 和 OneTimeTearDown 方法分别在运行开始和运行结束时运行一次,因为派生类继承自基类。 但是,当我在派生类中执行测试时,没有运行 SetupFixture OneTimexxx 方法。 为什么这不起作用?
[SetupFixture]
public class SetupFixture // This is located in AssemblyA
{
[OneTimeSetUp]
public void MySetup()
{
Console.WriteLine("In Assembly Setup");
}
[OneTimeTearDown]
public void MyTeardown()
{
Console.WriteLine("In Assembly Teardown");
}
}
namespace AssemblyA
{
[TestFixture]
public class BaseTestClass // This is also in AssemblyA
{
[Setup]
public void MySetup()
{
Console.WriteLine("In Base Test Setup");
}
[TearDown]
public void MyTeardown()
{
Console.WriteLine("In Base Test Teardown");
}
}
}
namespace AssemblyB
{
[TestFixture]
public class MyTestClass : BaseTestClass // The derived class is in AssemblyB
{
[Test]
public void MyTest()
{
Console.WriteLine("In MyTest");
}
}
}
NUnit 框架在测试程序集本身中查找 SetUpFixtures。 由于它只检查测试程序集,它永远不会查看 AssemblyA,因此永远不会找到夹具。
这与其他框架功能的工作方式是一致的。 例如,必须在测试程序集中找到 TestFixture,即使它们可能从另一个引用程序集中的基类继承。 但这仅从基类中提取信息,而不是其他未引用的类,例如您的 SetUpFixture。
您应该在每个测试程序集中定义一个全局 SetUpFixture。 如果您愿意,它可以在另一个程序集中引用更广泛的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.