如何配置Azure Pipeline VSTest@2运行多目标框架下的测试用例
解决多目标框架测试仅执行单框架的Azure Pipeline配置方法
核心原因
默认的测试任务如果没有显式指定要执行的目标框架,只会自动选择匹配当前运行环境的首个目标框架执行,导致另一个框架的测试被忽略。
配置方案
你可以选择以下两种常用配置方式实现双框架都执行测试:
方案1:使用dotnet test命令显式指定目标框架
在YAML中定义两个测试步骤,分别指定--framework参数对应两个目标框架:
steps: # 需先完成代码还原、全量构建步骤,保证已经生成两个目标框架的构建产出 - task: DotNetCoreCLI@2 displayName: 'Run tests for .NET Framework 4.6.1' inputs: command: 'test' projects: '**/*Tests.csproj' arguments: '--framework net461 --no-build' # 已提前构建可加--no-build参数节省执行时间 publishTestResults: true - task: DotNetCoreCLI@2 displayName: 'Run tests for .NET 5.0' inputs: command: 'test' projects: '**/*Tests.csproj' arguments: '--framework net5.0 --no-build' publishTestResults: true
注意:.NET Framework 4.6.1的测试仅能在Windows环境的代理上运行,Linux、macOS代理不支持.NET Framework测试执行
方案2:使用VSTest任务匹配双框架测试文件
如果习惯使用VSTest任务,可以配置测试路径同时匹配两个框架的测试dll:
steps: # 构建步骤需已生成两个框架的测试dll,常规路径为bin/$(Configuration)/net461/xxxTests.dll、bin/$(Configuration)/net5.0/xxxTests.dll - task: VSTest@2 displayName: 'Run tests for all target frameworks' inputs: testSelector: 'testAssemblies' testAssemblyVer2: | **\bin\**\*Tests.dll !**\obj\** searchFolder: '$(System.DefaultWorkingDirectory)' publishTestResults: true
验证方式
流水线执行完成后进入测试结果页,可看到测试用例的运行平台会分别标注.NET Framework 4.6.1和.NET 5.0,总用例数量和本地运行结果一致。
内容的提问来源于stack exchange,提问作者LorneCash
相关产品推荐
相关产品推荐

