我希望你遵循这种模式:
在下面的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. –