NUnit中如何让指定测试夹具并行执行,其余串行?
解决NUnit仅指定测试类并行执行的问题
当前问题分析
你在AssemblyInfo.cs中设置了全局并行配置:
using NUnit.Framework; [assembly: Parallelizable(ParallelScope.Fixtures)] [assembly: LevelOfParallelism(3)]
该配置会让所有测试类默认启用并行执行,即便你为其余50个类添加[NonParallelizable],在NUnit 3.13.3版本中可能存在优先级覆盖问题,导致标记不生效。
解决方案步骤
1. 移除全局并行默认配置
修改AssemblyInfo.cs,删除[assembly: Parallelizable(ParallelScope.Fixtures)],保留并行度设置:
using NUnit.Framework; [assembly: LevelOfParallelism(3)]
此时NUnit默认所有测试类串行执行,仅对显式标记[Parallelizable]的类启用并行。
2. 为需要并行的测试类添加标记
在那5个需要并行的测试类上添加[Parallelizable(ParallelScope.Fixtures)]:
[Parallelizable(ParallelScope.Fixtures)] public class ParallelTestClass1 { // 测试方法 }
3. 验证其余类的串行执行
其余未标记[Parallelizable]的测试类会自动以串行方式执行,无需额外添加[NonParallelizable]。如果仍有问题,可显式为这些类添加[NonParallelizable]确保生效:
[NonParallelizable] public class SerialTestClass1 { // 测试方法 }
额外说明
- 确保
[NonParallelizable]标记在测试类上,而非单个测试方法,否则类仍会参与并行执行,仅方法内部串行。 - NUnit 3.13.3版本中,全局并行配置优先级较高,移除全局默认并行是最可靠的解决方式,避免配置冲突。
内容的提问来源于stack exchange,提问作者Leo Danny
相关产品推荐
相关产品推荐

