繁体   English   中英

我如何命令执行 NUnit 测试装置?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM