NUnit 并行运行类

Loa*_*ing 3 nunit nunit-3.0

我对 nunit 的 Parallel 属性有点困惑:

假设我有 3 个班级,每个班级都充满了一些测试:

ClassA
    - Test1
    - Test2
    - Test3
ClassB
    - Test1
ClassC
    - Test1
    - Test2
Run Code Online (Sandbox Code Playgroud)

我想并行运行 A 类和 B 类中的每个测试(我不关心顺序)

我还想在 ClassA 和 ClassB 运行时运行 ClassC,但在这个类中我想保持我指定测试的顺序

所以我的问题是我应该如何设置属性才能获得这样的行为?

我检查了文档https://github.com/nunit/docs/wiki/Framework-Parallel-Test-Execution但我仍然很困惑

Cha*_*lie 5

从简单开始...

  1. 如果你什么都不做,ParallelizableAttribute那么就不会并行运行。:-)

  2. 如果添加Parallelizable到每个固定装置,则三个固定装置将并行运行,但单个测试不会并行运行。也就是说,一次最多可以运行三件事,每个类一个。

  3. 如果在程序集级别添加[Parallelizable(ParallelScope.Fixtures)],效果与(2)相同。仅当几乎所有装置都成功并行运行时才应执行此操作,在这种情况下,您会将那些不能并行运行的装置标记为[NonParallelizable]。我在帮助人们方面的经验是,太多人这样做,却没有意识到,如果不这样做,他们的测试可能并不总是正确地并行运行。开始时,最安全的做法是默认为非并行,并且仅在适合您时才添加它。

  4. 从 (2) 开始,将 A 和 B 上的属性更改为[Parallelizable(ParallelScope.All)]或 [Parallelizable(ParallelScope.Self + ParallelScope.Children)。我喜欢较长的形式,因为读者更清楚它的作用。这将完全达到您想要的效果。

还有一点需要注意:您应该确保指定测试顺序的任何固定装置都不会并行运行。NUnit 让您可以毫无错误地指定并行和顺序。在这种情况下,它只是按照您给出的顺序启动测试,但这可能不是您想要的。4.