Nunit - 每次测试前执行的全局方法

Nunit - global method executed before each test

是否有可能使用 Nunit 定义一个方法,该方法将在程序集中的 each 测试之前执行?

完全清楚:我不想在 all 测试之前执行一些代码 once,但我需要做一些常规的每次测试前设置。所以如果我有 10 个测试,我希望我的方法被执行 10 次。

遗憾的是,继承对我来说不是一个选择(我已经将它用于不同的目的,不能混合使用)

SetUp and TearDown个属性。

您可以使用 SetupAttribute 设置一个方法,该方法将在 TextFixture class 中的每个测试之前执行,但仅限于此。

像这样:

[TestFixture]
class SomeTests
{
    [SetUp]
    public void SetupBeforeEachTest()
    {
        //Some code
    }
}

我知道你说你不能使用继承,但如果你想在程序集中的每个测试之前执行一个方法,我认为这是最好的方法,因为 SetUp 属性是从任何继承的基地 class。因此,如果一个基础 class 定义了一个 SetUp 方法,该方法将在派生的每个测试方法之前被调用 class:

abstract class BaseTestFixture
{
    [SetUp]
    public void SetupBeforeEachTest()
    {
        //Some code
    }
}

[TestFixture]
class SomeTests : BaseTestFixure
{
    //Tests
}

您可以定义一个在其 Before 方法中包含所需代码的操作属性。将它应用于程序集,并带有一个参数,表明它应该用于每个测试。

请注意,Action Attribute 在 NUnit 2 和 3 之间的工作方式略有不同,因此请务必查看文档的相应级别。