我希望你遵循這種模式:
在下面的MySetupClass
中定義了測試套件設置和拆卸方法,這些方法在測試運行的開始和結束時只執行一次。 請參閱SetupFixture文檔here。
MySetupClass.cs
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[SetUpFixture]
public class MySetUpClass
{
[OneTimeSetUp]
RunBeforeAnyTests()
{
Console.writeLine("SetupFixture - OneTimeSetup");
}
[OneTimeTearDown]
RunAfterAnyTests()
{
Console.writeLine("Suite TearDown - OneTimeTearDown");
}
}
}
在以下SuccessTests.cs
,Setup
和TearDown
之前和每次測試後執行,因爲這些方法在標有atttribute TestFixture
類定義。 OneTimeSetup
& OneTimeTearDown
屬性定義測試用例中的方法在類中的所有測試方法之前和之後執行一次。
請參考Setup屬性的文檔[here] [2]。
SuccessTests.cs
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
[SetUp]
public void Init()
{ Console.writeLine("Test Setup"); }
[TearDown]
public void Cleanup()
{ Console.writeLine("Test Teardown"); }
[OneTimeSetup]
public void Test1()
{ Console.writeLine("Test Fixture - OneTimeSetup"); }
[OneTimeTearDown]
public void Test2()
{ Console.writeLine("Test Fixture - OneTimeTearDown"); }
[Test]
public void Test1()
{ Console.writeLine("Actual Test1"); }
[Test]
public void Test2()
{ Console.writeLine("Actual Test2"); }
}
}
運行上面的測試將會給這個結果。
Suite Setup - OneTimeSetup
Test Fixture - OneTimeSetup
Test Setup
Actual Test1
Test Teardown
Test Setup
Actual Test2
Test Teardown
Test Fixture TearDown - OneTimeTearDown
Suite TearDown - OneTimeTearDown
你所描述的內容聽起來在概念上是正確的,你可以發佈你的代碼,以便我們可以看到有什麼問題嗎? – Chris
正如克里斯說的,[SetupFixture]與[OneTimeSetup]是正確的。您使用哪個單元測試運行器來運行測試?並非所有測試跑步者都已更新爲支持NUnit 3. –