NUnit 测试顺序 运行 首先在基础 class 中测试

NUnit Test order run test in base class first

嗨,我正在尝试 运行 测试,其中每个测试夹具都有不同的场景,但每个都有一个常见的情况,我已经创建了一个基础 class/test 夹具,并且说常见的测试需要 运行 首先在我的每个测试夹具的测试顺序中,因为我正在测试 api 端点,其中第一个测试(在基础 class 中)需要发送一个简单的 GET 请求以确保端点可用并且每个 TestFixture 中的其余测试测试不同的请求,这与其他测试装置不通用。

我已经设法按照它们需要 运行 的顺序对测试和测试夹具进行排序,但是驻留在基数 class 运行 中的测试最后在每个夹具中即使我将基本测试的顺序指定为 1。是否有任何方法可以让 Common test 运行s 首先,我已经知道 NUnit 运行s 按字母顺序进行测试,但事实并非如此' 当测试在基础 class.

时发生

我的代码结构类似于:

[TestFixture, Order(1)]
public abstract class BaseClass 
{
    [Test, Order(1)]
    public async Task CommonTest()
    {
         //Perform tests
    }
}

[TestFixture, Order(1)]
public class ClassA : BaseClass
{
    [Test, Order(1)]
    public async Task Test1()
    {
        //Perform Tests
    }

    [Test, Order(2)]
    public async Task Test2()
    {
        //Perform Tests
    }
}

[TestFixture, Order(2)]
public class ClassB : BaseClass
{
    [Test, Order(1)]
    public async Task Test3()
    {
        //Perform Tests
    }

    [Test, Order(2)]
    public async Task Test4()
    {
        //Perform Tests
    }
}

测试时执行顺序如下:

ClassA: Test1,
        Test2,
        CommonTest

ClassB: Test3,
        Test4,
        CommonTest

但我要求按此顺序运行进行测试

ClassA: CommonTest
        Test1
        Test2

ClassB: CommonTest
        Test3
        Test4        

NUnit 下如此严格的测试顺序有点违反其设计意图,即支持独立单元测试。也就是说,您不是第一个想要这样做的人。 :-)

OrderAttributeTestFixture 内订购测试。一个抽象基础 class 而不是 实际上是一个(运行时)TestFixture,即使你已经在它上面使用了 TestFixtureAttribute。相反,它的抽象基础为实际的运行时固定装置贡献了代码,这些固定装置是非抽象派生的 classes.

我没试过这个,但我认为如果你保留一些排序值用于抽象基础并在派生 classes 中使用大于该数字的值,你会得到你想要的结果.