标记NonParallelizable的测试中,SetUp方法能否并行执行?
关于NUnit中NonParallelizable特性的执行逻辑问题
我有一个标记了NonParallelizable特性的测试方法,想咨询:前一个测试用例的TestMeth()执行时,当前测试的TestSetup()是否会与其并行运行,是不是只有TestMeth()方法被“锁定”?我注意到NonParallelizable特性可应用于包括TestSetup()在内的各个方法,示例代码如下:
public class TestClass { [SetUp] public void TestSetup() { //some init stuff, which must be done for each test case nonparallel to the running tests/test cases } [NonParallelizable, TestCaseSource("SomeTestCaseProvider")] public void TestMeth() { //... } }
问题解答
- 按NUnit的并行执行规则,当测试方法标记
NonParallelizable时,整个测试流程(包括该测试对应的SetUp、测试方法本身、TearDown)都会被纳入串行执行范围,不会和其他测试的任何环节并行。 - 回到你的场景:当前测试的
TestSetup()必须等前一个测试用例的TestMeth()完全执行完毕后才会启动,不存在TestSetup()和其他测试的TestMeth()并行运行的情况。 - 如果你的初始化逻辑确实不能和任何测试操作并行,建议直接给
[SetUp]方法也加上NonParallelizable特性,这样约束更明确,也能避免潜在的并行风险。
内容的提问来源于stack exchange,提问作者Rekshino
相关产品推荐
相关产品推荐

