如何为SpecRun(SpecFlow+ Runner)配置类/Feature级别测试并行执行
解决方案
SpecRun的并行调度范围由testSchedulingMode参数控制,你当前配置的Adaptive模式会将所有Scenario打散到不同线程调度,是默认的Scenario级并行模式,调整方法如下:
- 修改srprofile中的Execution节点属性,将
testSchedulingMode的值从Adaptive改为SequentialPerFeature,该模式会保证同一个Feature(对应生成的测试类)下的所有Scenario串行执行,不同Feature之间并行调度,完全匹配你要的类/Feature级并行效果。 - 你当前配置的
testThreadCount="5"已经对应你需要的5个并行Worker,无需额外修改。
修改后的完整配置示例:
<Execution stopAfterFailures="0" retryFor="None" retryCount="0" testThreadCount="5" testSchedulingMode="SequentialPerFeature" /> <Environment testThreadIsolation="AppDomain" apartmentState="Unknown" />
注意事项
- 不需要额外添加MSTest的
[assembly: Parallelize]特性,SpecRun的调度规则优先级高于单元测试框架的并行配置,混用反而可能导致调度异常。 - 如果有个别Feature需要禁止并行,可在对应.feature文件头部添加
@serial标签,标记后的Feature会全局串行执行。 - 配置修改完成后请清理项目并重新生成,避免缓存的旧配置生效。
内容的提问来源于stack exchange,提问作者Shalashaska
相关产品推荐
相关产品推荐

