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

VSTest@2的testAssemblyVer2如何配置DLL按指定顺序执行?

VSTest@2 自定义测试DLL执行顺序配置方法

问题原因

VSTest@2任务的testAssemblyVer2参数本质是测试程序集的匹配规则输入,支持通配符匹配,底层收集到所有匹配的程序集后会默认按文件路径做字母序排序,即使设置runInParallel: false关闭并行执行,也不会保留参数中书写的DLL顺序,因此会出现预期顺序和实际执行顺序不一致的问题。

可行配置方案

方案1:拆分多任务按顺序执行(兼容性最好)

流水线中任务默认按从上到下的顺序串行执行,将需要按序运行的DLL拆分到独立的VSTest@2任务中,即可100%保证执行顺序符合预期,该方案不依赖VSTest版本,无兼容问题。
示例配置:

# 执行顺序第1位:TestA.dll
- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '$(ArtifcatsDir)\Tests\TestA.dll'
    runInParallel: false

# 执行顺序第2位:TestE.dll
- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '$(ArtifcatsDir)\Tests\TestE.dll'
    runInParallel: false

# 执行顺序第3位:TestB.dll
- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '$(ArtifcatsDir)\Tests\TestB.dll'
    runInParallel: false

如果DLL数量较多,可以通过流水线模板循环生成有序任务,减少重复配置工作量。

方案2:通过.runsettings文件指定执行顺序

如果不想拆分多个VSTest任务,可以使用VSTest的运行配置文件指定程序集加载顺序,该方案要求VSTest平台版本≥17.0。

  1. 在仓库根目录新增ordered.runsettings配置文件,按需要的执行顺序列出所有测试DLL路径:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <MSTest>
    <TestAssemblyOrder>
      <Assembly>$(ArtifcatsDir)\Tests\TestA.dll</Assembly>
      <Assembly>$(ArtifcatsDir)\Tests\TestE.dll</Assembly>
      <Assembly>$(ArtifcatsDir)\Tests\TestB.dll</Assembly>
    </TestAssemblyOrder>
  </MSTest>
</RunSettings>
  1. 在原有VSTest@2任务中增加配置,关联该runsettings文件:
task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      $(ArtifcatsDir)\Tests\TestA.dll
      $(ArtifcatsDir)\Tests\TestE.dll
      $(ArtifcatsDir)\Tests\TestB.dll
    runInParallel: false
    runSettingsFile: '$(Build.SourcesDirectory)\ordered.runsettings'

注意点

  • runInParallel: false仅控制测试用例不并行调度,不具备保留程序集输入顺序的作用,无法通过该参数实现顺序控制
  • 不建议通过给DLL文件名加数字前缀适配默认字母排序的方式实现顺序控制,后续新增、调整测试DLL时维护成本极高,容易出现顺序错乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:48:10