![](/img/trans.png)
[英]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.