Azure DevOps测试计划执行报错:Visual Studio Test任务版本/配置异常
解决Azure DevOps测试计划运行自动化测试的VSTest任务配置错误
问题场景
在Azure DevOps中执行测试计划内的自动化测试用例时,触发报错:
Validating stage:The selected stage does not have the right version or settings of the Visual Studio Test task to run tests
但对应的Release Pipeline直接运行时,测试用例能正常显示通过。复现路径如下:
- 创建测试计划
TestPlan及测试用例ID65 - 本地用VS2019创建.NET4.6.2的MS Test项目,关联测试方法与ID65后推送至Azure仓库
- 配置Build Pipeline编译并发布测试产物
- 配置Release Pipeline运行测试,测试计划中ID65显示通过
- 通过测试计划的「Execute」→「Run with options」选择发布阶段运行,触发上述报错
核心排查点
报错的本质是测试计划触发的测试运行,对Release阶段的VSTest任务有额外配置要求,而直接运行Release Pipeline时不需要这些配置,因此出现两种场景结果不一致的情况。
修复步骤
1. 修正Release Pipeline的VSTest任务配置
打开Release Pipeline中执行测试的VSTest@3任务,确保以下配置正确:
- 勾选「将测试结果发布到测试计划」选项(在任务的「测试计划」分组下),并选择对应的测试计划、测试套件
- 测试程序集路径与Build Pipeline生成的路径一致,例如
**\TestProject.dll(需匹配下载后的产物路径) - 指定测试运行平台(x86/x64),与项目编译平台保持一致(MS Test默认x86)
- 确保任务版本为VSTest@3(旧版本可能不支持测试计划集成)
2. 调整Build Pipeline的产物发布范围
当前Build Pipeline仅发布TestProject文件夹,会导致测试程序集的依赖文件缺失,修改PublishBuildArtifacts任务的配置:
- task: PublishBuildArtifacts@1 displayName: '3. Publish Build Artifacts' inputs: PathtoPublish: '**\bin\Debug\net462' # 发布完整的编译输出目录 artifactName: 'TestAssemblies' # 自定义产物名称,方便Release阶段引用
同时,建议在Build的DotNetCoreCLI任务中明确指定构建配置:
arguments: '--configuration Debug'
3. 验证测试用例关联与产物引用
- 在测试计划中打开ID65用例,确认「自动化」标签下已正确关联测试方法,且关联的构建版本为最新成功构建
- 在Release Pipeline中添加
DownloadBuildArtifacts任务,选择刚才发布的TestAssemblies产物,并将VSTest任务的searchFolder设置为$(System.ArtifactsDirectory)\TestAssemblies
4. 完整Build Pipeline示例
#AzureDevops.yml trigger: none pool: vmImage: 'windows-latest' demands: vstest steps: - task: DotNetCoreCLI@2 displayName: '1. Build Solution' inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration Debug' - task: VSTest@3 displayName: '2. Run Tests' inputs: testSelector: 'testAssemblies' testAssemblyVer2: | !**\*TestAdapter.dll !**\obj\** **\bin\Debug\net462\TestProject.dll searchFolder: '$(System.DefaultWorkingDirectory)' codeCoverageEnabled: false platform: 'x86' - task: PublishBuildArtifacts@1 displayName: '3. Publish Build Artifacts' inputs: PathtoPublish: '**\bin\Debug\net462' artifactName: 'TestAssemblies'
验证
重新运行Build Pipeline生成最新产物,然后在测试计划中执行ID65用例,即可正常触发自动化测试并更新测试结果。
内容的提问来源于stack exchange,提问作者WindyCity
相关产品推荐
相关产品推荐

