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 下如此严格的测试顺序有点违反其设计意图,即支持独立单元测试。也就是说,您不是第一个想要这样做的人。 :-)
OrderAttribute
在 TestFixture
内订购测试。一个抽象基础 class 而不是 实际上是一个(运行时)TestFixture
,即使你已经在它上面使用了 TestFixtureAttribute
。相反,它的抽象基础为实际的运行时固定装置贡献了代码,这些固定装置是非抽象派生的 classes.
我没试过这个,但我认为如果你保留一些排序值用于抽象基础并在派生 classes 中使用大于该数字的值,你会得到你想要的结果.
嗨,我正在尝试 运行 测试,其中每个测试夹具都有不同的场景,但每个都有一个常见的情况,我已经创建了一个基础 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 下如此严格的测试顺序有点违反其设计意图,即支持独立单元测试。也就是说,您不是第一个想要这样做的人。 :-)
OrderAttribute
在 TestFixture
内订购测试。一个抽象基础 class 而不是 实际上是一个(运行时)TestFixture
,即使你已经在它上面使用了 TestFixtureAttribute
。相反,它的抽象基础为实际的运行时固定装置贡献了代码,这些固定装置是非抽象派生的 classes.
我没试过这个,但我认为如果你保留一些排序值用于抽象基础并在派生 classes 中使用大于该数字的值,你会得到你想要的结果.