不止一次问过这个问题.但是给出的唯一答案是"你不应该订购你的单元测试,这是坏的,因为"或"你可以避免这种情况......"
我已经知道它很糟糕,为什么它很糟糕,以及避免它的技术.但这不是我想知道的.我想知道是否可以订购NUnit测试的执行,而不是按字母顺序排序.直言不讳:我实际上希望国家从一个测试传播到另一个测试.相信我,我有一个聪明的理由,这违背了通常的哲学.
MSTest具有"有序测试"功能,在某些情况下非常有用.我想在NUnit中拥有这种能力.可以吗?
sca*_*r80 17
NUnit 3.2.0的更新 - 现在它支持OrderAttribute.
OrderAttribute可以放在测试方法上,以指定运行测试的顺序.例:
public class MyFixture
{
[Test, Order(1)]
public void TestA() { ... }
[Test, Order(2)]
public void TestB() { ... }
[Test]
public void TestC() { ... }
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/nunit/docs/wiki/Order-Attribute
解决方法(hack)是按字母顺序排列测试用例名称.看到这个帖子:
https://bugs.launchpad.net/nunit-3.0/+bug/740539
依赖于字母顺序是一种可以使用的解决方法,但除了显示的可视顺序之外,它没有记录和支持.理论上它可以随时改变.实际上它在NUnit 3.0之前不会改变,所以你使用它作为一种解决方法是非常安全的
这句话来自NUnit的主要开发者Charlie Poole.
看起来他们还有一个方案来支持NUnit 3中的有序测试,但他们将如何这样做仍在讨论中.
小智 5
只是NUnit 2.5.1的更新.根据文档,有些情况甚至不支持字母顺序.
执行顺序
在NUnit 2.5中,各个测试用例按字母顺序排序并按此顺序执行.使用NUnit 2.5.1时,各个案例不会被排序,而是按照NUnit发现它们的顺序执行.此顺序不遵循属性的词法顺序,并且通常会在不同的编译器或CLR的不同版本之间变化.
因此,当TestCaseAttribute在方法上多次出现或者其他数据提供属性与TestCaseAttribute结合使用时,测试用例的顺序是未定义的.
| 归档时间: |
|
| 查看次数: |
13185 次 |
| 最近记录: |