You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ADO YAML流水线并行作业遵循MSTest类级并行规则?

解决ADO流水线中MSTest类级并行跨代理冲突的方案

当前MSTest已配置类级并行(同一类内测试顺序执行,不同类并行),但ADO流水线的并行作业会将同一类的测试拆分到不同代理同时执行,导致测试失败。以下是几种可行的解决方式:

1. 按测试类划分流水线作业矩阵

放弃原有的parallel并行策略,改用matrix按每个测试类创建独立作业,确保同一类的所有测试都在单个代理上执行,不同类的作业并行运行。

修改后的流水线YAML示例:

- job: UITestsRun
  strategy:
    matrix:
      ClassA:
        TestClassName: 'ClassA'
      ClassB:
        TestClassName: 'ClassB'
      # 根据实际测试类数量依次添加
  steps:
  - checkout: none
  - download: ${{parameters.TestDllArtifactName}}
  - task: VSTest@2
    inputs:
      testAssemblyVer2: '**\Automation.Tests.dll'
      searchFolder: 'TestDllPath'
      resultsFolder: 'TestResults'
      testFiltercriteria: 'FullyQualifiedName~${{variables.TestClassName}}'
      runSettingsFile: 'testsettings.runsettings'
      publishRunAttachments: true
      rerunFailedTests: true
      rerunFailedThreshold: 100
      rerunMaxAttempts: 1
  • 优势:严格遵循类级并行规则,彻底避免同一类测试跨代理执行的问题。
  • 注意:若测试类数量过多,会生成大量流水线作业,需考虑ADO的作业并发限制。

2. 配置VSTest任务按测试类分组批处理

利用VSTest任务的分组功能,将整个测试类作为一个批处理单元分配给代理,确保同一类的所有测试在同一个代理上执行,同时保留流水线的并行作业数量控制。

修改后的VSTest任务配置:

- job: UITestsRun
  strategy:
    parallel: 10
  steps:
  - checkout: none
  - download: ${{parameters.TestDllArtifactName}}
  - task: VSTest@2
    inputs:
      testAssemblyVer2: '**\Automation.Tests.dll'
      searchFolder: 'TestDllPath'
      resultsFolder: 'TestResults'
      testFiltercriteria: '${{parameters.AdditionalTestCriterias}}'
      runSettingsFile: 'testsettings.runsettings'
      publishRunAttachments: true
      batchingBasedOnAgentsOption: basedOnGrouping
      groupBy: 'class'
      rerunFailedTests: true
      rerunFailedThreshold: 100
      rerunMaxAttempts: 1
  • 核心调整:将batchingBasedOnAgentsOption设为basedOnGrouping,并指定groupBy: 'class',让VSTest按测试类拆分测试集,每个代理拿到完整的一类测试。
  • 注意:需确保使用的VSTest@2任务版本支持groupBy参数,且runsettings中的配置与该分组策略兼容。

3. 自定义测试批处理脚本(复杂场景备选)

若上述方法无法满足需求,可编写PowerShell脚本扫描测试DLL,提取所有测试类列表,然后将每个类的测试作为独立单元分配给流水线作业。脚本需生成对应的测试筛选条件,在流水线中动态传递给VSTest任务。此方式适合有特殊批处理逻辑的场景,但实现成本较高。


内容的提问来源于stack exchange,提问作者Oxana Viktorovna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:05:34