【问题标题】:NUnit Test order run test in base class firstNUnit Test 命令首先在基类中运行测试
【发布时间】:2021-11-22 02:24:09
【问题描述】:

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

我已经设法按照需要运行的顺序对测试和测试夹具进行排序,但是驻留在基类中的测试在每个夹具中最后运行,即使我将基础测试的顺序指定为 1。有吗无论如何,为了让 Common 测试首先运行,我已经知道 NUnit 按字母顺序运行测试,但是当测试在基类中时不会发生这种情况。

我的代码结构类似于:

[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        

【问题讨论】:

    标签: c# .net unit-testing nunit


    【解决方案1】:

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

    OrderAttribute 在TestFixture 中订购测试。抽象基类不是实际上是(运行时)TestFixture,即使您在其上使用了TestFixtureAttribute。相反,它为实际的运行时固定装置(非抽象派生类)贡献代码的抽象基。

    我还没有尝试过,但我认为如果您保留一些排序值以在抽象基类中使用并在派生类中使用大于该数字的值,您会得到您想要的结果。

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多