如何订购NUnit测试

如何订购NUnit测试,nunit,Nunit,不止一次如此。但是给出的唯一答案是“你不需要为你的单元测试排序,这是不好的,因为”或者“你可以避免,如果…” 我已经知道它不好,为什么不好,以及避免它的技巧。但这不是我想知道的。我想知道除了按字母顺序外,是否可以按顺序执行NUnit测试。坦率地说:我实际上希望状态从一个测试转移到下一个测试。相信我,我有一个聪明的理由,这违背了通常的哲学 MSTest具有“有序测试”功能,在某些情况下非常有用。我想在NUnit有这种能力。可以这样做吗?解决方法(hack)是按字母顺序排列测试用例名称。请参阅此线程

不止一次如此。但是给出的唯一答案是“你不需要为你的单元测试排序,这是不好的,因为”或者“你可以避免,如果…”

我已经知道它不好,为什么不好,以及避免它的技巧。但这不是我想知道的。我想知道除了按字母顺序外,是否可以按顺序执行NUnit测试。坦率地说:我实际上希望状态从一个测试转移到下一个测试。相信我,我有一个聪明的理由,这违背了通常的哲学

MSTest具有“有序测试”功能,在某些情况下非常有用。我想在NUnit有这种能力。可以这样做吗?

解决方法(hack)是按字母顺序排列测试用例名称。请参阅此线程:

依赖字母顺序是一种可以使用的解决方法,但除了显示的视觉顺序之外,它没有文档记录和支持。理论上,它随时都可能发生变化。实际上,它在NUnit3.0之前是不会改变的,所以将它作为一个解决方案使用是非常安全的

这段话出自NUnit的主要开发者Charlie Poole


他们似乎也有一个计划来支持NUnit 3中的有序测试,尽管他们将如何做到这一点仍在讨论中。

只是NUnit 2.5.1的更新。根据文件记载,有些情况甚至不支持字母顺序

执行顺序

在NUnit 2.5中,单个测试用例按字母顺序和顺序进行排序 按那个顺序执行。对于NUnit 2.5.1,个别案例不适用 已排序,但按NUnit发现它们的顺序执行。 此顺序不遵循属性和的词法顺序 在不同的编译器或不同版本的 CLR

因此,当TestCaseAttribute在一个方法上多次出现时 或者当提供属性的其他数据与 TestCaseAttribute,测试用例的顺序未定义


尝试使用
NameParameters
参数传递带有所需字符串的
TestName
,以便TestCase()按TestName排序

    [TestCase(..., TestName = "1stTest")]
    [TestCase(..., TestName = "2ndTest")]

更新NUnit 3.2.0-现在它支持OrderAttribute

OrderAttribute可以放置在测试方法上,以指定测试的运行顺序。 例子:


对于Nuint,您可以使用以下代码

[TestMethod]
    [Priority(2)]

这不会影响“测试资源管理器”窗口中的顺序吗?
[TestMethod]
    [Priority(2)]