在所有测试之前和之后运行的 MSTest 设置/拆卸方法

Ala*_*inD 0 nunit unit-testing mstest xunit visual-studio-2019

Visual Studio 2019 中的 MSTest v2 相对较新。该属性指示该方法应在每个测试之前TestInitialize运行。同样,指示该方法应在每次测试后运行。TestCleanup

[TestInitialize()]
public void Setup()
{
    // This method will be called before each MSTest test method
}

[TestCleanup()]
public void Teardown()
{
    // This method will be called after each MSTest test method has completed
}
Run Code Online (Sandbox Code Playgroud)

如果你的测试类有N个方法,上面的方法将运行N次。

有没有一种方法可以发出只运行一次的类似设置和拆卸的方法的信号?换句话说,对于所有 N 个测试的每次完整运行,每个方法将仅运行一次。

NUnit3 和 xUnit v2.4.0 是否有类似的机制?

Ala*_*inD 7

经过一番寻找后,我偶然发现了这个网站,其中有一个 MSTest“备忘单”,其中包含我正在寻找的示例(在 MSTest 中):

[ClassInitialize]
public static void TestFixtureSetup(TestContext context)
{
    // Called once before any MSTest test method has started (optional)
}

[ClassCleanup]
public static void TestFixtureTearDown()
{
    // Called once after all MSTest test methods have completed (optional)
}
Run Code Online (Sandbox Code Playgroud)

ClassInitialize方法必须是公共的、静态的、返回 void 并采用单个参数。该ClassCleanup方法必须是公共的、静态的、返回 void 并且不带任何参数。

对于 NUnit,可以在此处找到属性引用:

[OneTimeSetUp]
public void TestFixtureSetup()
{
    // Called once before any NUnit test method has started (optional)
}

[OneTimeTearDown]
public void TestFixtureTearDown()
{
    // Called once after all NUnit test methods have completed (optional)
}
Run Code Online (Sandbox Code Playgroud)

OneTimeSetUp方法必须是公共的,但可以是静态方法或实例方法。方法也一样OneTimeTearDown

xUnit 似乎不支持Setup/Teardown功能。