我对 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但我仍然很困惑
从简单开始...
如果你什么都不做,ParallelizableAttribute那么就不会并行运行。:-)
如果添加Parallelizable到每个固定装置,则三个固定装置将并行运行,但单个测试不会并行运行。也就是说,一次最多可以运行三件事,每个类一个。
如果在程序集级别添加[Parallelizable(ParallelScope.Fixtures)],效果与(2)相同。仅当几乎所有装置都成功并行运行时才应执行此操作,在这种情况下,您会将那些不能并行运行的装置标记为[NonParallelizable]。我在帮助人们方面的经验是,太多人这样做,却没有意识到,如果不这样做,他们的测试可能并不总是正确地并行运行。开始时,最安全的做法是默认为非并行,并且仅在适合您时才添加它。
从 (2) 开始,将 A 和 B 上的属性更改为[Parallelizable(ParallelScope.All)]或
[Parallelizable(ParallelScope.Self + ParallelScope.Children)。我喜欢较长的形式,因为读者更清楚它的作用。这将完全达到您想要的效果。
还有一点需要注意:您应该确保指定测试顺序的任何固定装置都不会并行运行。NUnit 让您可以毫无错误地指定并行和顺序。在这种情况下,它只是按照您给出的顺序启动测试,但这可能不是您想要的。4.