首页 > 解决方案 > NUnit中有顺序或优先级的概念吗?

问题描述

我正在使用NUnit 3.12.0NUnit3TestAdapter 3.16.1

尝试在网上搜索,但没有得到明确的答案,我们是否可以使用NUnitNUnit3TestAdapter以特定顺序或优先级运行我们的测试?

假设我有 5 个带有标签 [] 的方法(例如 A、B、C、D 和 E),我想按照 B、C、E、A 和 D 的顺序/优先级运行它。

请建议我们是否可以使用任何特定标签来描述顺序或优先级,就像我们在 testNG 中所做的那样

@Test(priority = 1)

标签: nunitnunit-3.0

解决方案


NUnit 支持OrderAttribute,您可以使用它来松散地控制类中测试方法的顺序。对于您的示例,您可以编写:

[Test, Order(4)]
public void A() { }

[Test, Order(1)]
public void B() { }

[Test, Order(2)]
public void C() { }

[Test, Order(5)]
public void D() { }

[Test, Order(3)]
public void E() { }

几点注意事项:

  1. 我在上面写了“松散”,因为该属性控制了测试开始的顺序。不涉及依赖。也就是说,在并行执行的情况下,测试E不会等到测试B和C完成后再运行。当然,如果你不启用并行执行,那么看起来E 依赖于 A 和 B,所以你需要记住情况并非如此,或者(如果你确实需要真正的依赖)标记类在其中您将 Order 属性用作 NonParallelizable。

  2. 在所有具有该属性的测试之后,将启动同一类中没有OrderAttribute 的任何测试。

有关 Order 属性的更多信息,请参阅 NUnit 文档。


推荐阅读