NUnit 运行 类 并行

NUnit running classes in parallel

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

假设我有 3 个 类,每个都有一些测试:

ClassA
    - Test1
    - Test2
    - Test3
ClassB
    - Test1
ClassC
    - Test1
    - Test2

我想 运行 ClassA 和 ClassB 中的每个测试并行进行(我不关心顺序)

我也想 运行 ClassC 而 ClassA 和 ClassB 是 运行ning,但是在这个 class 我想保持我指定测试的顺序

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

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

从简单开始...

  1. 如果您不对 ParallelizableAttribute 执行任何操作,那么 运行 将不会并行执行。 :-)

  2. 如果给每个fixture加上Parallelizable,那么三个fixture会运行并行,但是单独的测试不会。也就是说,一次最多可以 运行ning 三件事,每个 class.

  3. 一件。
  4. 如果在汇编级加上[Parallelizable(ParallelScope.Fixtures)],效果和(2)一样。仅当 几乎所有 的灯具将成功并行 运行 时才应执行此操作,在这种情况下,您会将不能成功的灯具标记为 [NonParallelizable]。我在帮助人们方面的经验是,太多的人在这样做时没有意识到他们的测试可能并不总是 运行 正确并行,如果不是这样写的话。首先,默认为非平行是最安全的,并且只在适合您时添加它。

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

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