如何在Azure Pipelines中按项目文件命名测试运行(无需单项目单步骤)
解决Azure Pipelines中DotNetCoreCLI测试任务运行名称不直观的问题
你当前的DotNetCoreCLI测试任务配置如下:
- task: DotNetCoreCLI@2 inputs: command: 'test' projects: src/Common/**/*Tests.*proj arguments: '-c Release'
当使用Glob模式匹配多个测试项目时,自动生成的测试运行名称确实不够直观。可以通过PowerShell遍历项目并逐个执行测试的方式,在不创建多个任务的前提下,让每个测试运行的名称对应项目名。
解决方案配置
替换原有的DotNetCoreCLI任务为以下PowerShell任务:
- task: PowerShell@2 inputs: targetType: 'inline' script: | # 递归查找所有符合规则的测试项目 $testProjects = Get-ChildItem -Path src/Common/**/*Tests.*proj -Recurse foreach ($project in $testProjects) { # 提取不带扩展名的项目名称 $projectName = [System.IO.Path]::GetFileNameWithoutExtension($project.Name) # 执行测试,指定以项目名命名的日志文件和独立结果目录 dotnet test "$($project.FullName)" -c Release ` --logger "trx;LogFileName=$projectName.trx" ` --results-directory "$(Agent.TempDirectory)/TestResults/$projectName" }
说明
- 脚本会自动遍历所有匹配
src/Common/**/*Tests.*proj的测试项目,无需手动逐个添加 - 通过
--logger参数指定trx日志文件名为项目名,Azure Pipelines识别该日志文件后,会将测试运行名称显示为对应的项目名 - 每个项目使用独立的结果目录,避免不同项目的测试日志互相覆盖
内容的提问来源于stack exchange,提问作者cmeeren
相关产品推荐
相关产品推荐

