我对nunit的Parallel属性有些困惑:
说我有3个班级,每个班级都进行了一些测试:
ClassA
- Test1
- Test2
- Test3
ClassB
- Test1
ClassC
- Test1
- Test2
我想在ClassA和ClassB中并行运行每个测试(我不在乎顺序)
我也想在运行ClassA和ClassB的同时运行ClassC,但是在这个类中,我想保持我指定测试的顺序
所以我的问题是我应该如何设置属性以获得这种行为?
我检查了文档https://github.com/nunit/docs/wiki/Framework-Parallel-Test-Execution,但我仍然感到困惑
答案 0 :(得分:2)
从简单开始...
如果您对ParallelizableAttribute
不执行任何操作,则不会并行运行。 :-)
如果将Parallelizable
添加到每个灯具,则三个灯具将并行运行,但单独的测试则不会。也就是说,一次最多可以运行三件事,每个类一次。
如果在程序集级别添加[Parallelizable(ParallelScope.Fixtures)]
,则效果与(2)相同。仅当几乎所有的灯具可以成功并行运行时,才应执行此操作,在这种情况下,您将标记不能为[NonParallelizable]
的灯具。我在帮助人们方面的经验是,太多的人没有意识到自己的测试在编写时可能不会始终正确并行运行。首先,最安全的默认设置为非并行,并且仅在适合您时添加它。
从(2)开始,将A和B的属性更改为[Parallelizable(ParallelScope.All)]
或
[Parallelizable(ParallelScope.Self + ParallelScope.Children)
。我喜欢较长的表格,因为它可以使读者更清楚地知道它的作用。这将完全具有您想要的效果。
更多注意事项:您可能应该确保指定测试顺序的所有夹具都不并行运行。 NUnit让您同时指定并行和顺序,而不会出错。在这种情况下,只需按照您给出的顺序开始测试,但这可能不是您想要的。 4.