[英]How do I order execution of NUnit test fixtures?
我有一个 NUnit 测试项目,它有两个[TextFixture]
s。
我希望其中一个在处理文件创建时先于另一个运行。 他们目前以错误的顺序运行。
鉴于我无法更改[Test]
或将它们组合成一个单元测试,有没有办法可以控制测试夹具的运行顺序?
我尝试了[Order(int num)]
属性并且还尝试创建一个新的播放列表。
他们两个都不工作。
C#、.NET 框架、NUnit 测试框架、Windows。
[OrderAttribute]
的文档指出固定装置的顺序适用于包含的命名空间。
确保您的灯具在同一命名空间内,并且您已在测试灯具级别应用[OrderAttribute]
:
namespace SameNamespace {
[TestFixture, Order(1)]
public class MyFirstFixture
{
/* ... */ }
}
[TestFixture, Order(2)]
public class MySecondFixture
{
/* ... */ }
}
}
此外,重要的是要记住,虽然MyFirstFixture
将在MySecondFixture
之前运行,但内部测试的顺序对于测试夹具是本地的。
MyFirstFixture
中的[Order(1)]
测试将在MySecondFixture
中的所有测试完成后运行。
重要说明:文档也不保证订购。
测试不会等待先前的测试完成。 如果正在使用多个线程,则可能会在一些较早的测试仍在运行时开始测试。
无论如何,测试应该遵循 FIR.ST 测试原则,由 Robert C. Martin 在他的书“Clean Code”中介绍。
FIR.ST 中的I。 代表isolated ,这意味着测试不应该相互依赖,并且每个测试都应该负责正确执行所需的设置。
如果他们正在测试一件事,请尽力最终将测试合并为一个,或者以一种方式重写您的逻辑,使测试 1 测试的代码段可以与测试 2 测试的代码段隔离进行测试。
这也会产生遵守SRP的更简洁代码的副作用。
双赢局面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.