如何在Azure DevOps中同时保留.NET与Angular两套测试结果?
解决Azure DevOps中同时保留.NET和Angular测试结果的问题
根据你的描述,核心问题是.NET的测试结果没有被正确发布(或仅在测试成功时才发布),导致PR审核时看不到完整的测试信息。以下是针对性的解决步骤:
1. 确保.NET测试结果发布任务始终执行
你的Angular发布任务设置了condition: succeededOrFailed(),确保无论测试是否失败都会发布结果,但.NET任务默认仅在前面步骤全部成功时才执行。如果.NET测试失败,发布任务会直接被跳过,结果自然丢失。
修改.NET的PublishTestResults@2任务,添加同Angular一样的执行条件:
- task: PublishTestResults@2 displayName: 'Publish .NET test results' condition: succeededOrFailed() # 关键:确保测试失败时也会发布结果 inputs: testResultsFormat: 'NUnit' testResultsFiles: '**/TEST-*.xml' searchFolder: '$(System.DefaultWorkingDirectory)/testResults' failTaskOnFailedTests: true testRunTitle: '.Net tests' buildPlatform: 'Any CPU' buildConfiguration: 'Debug'
2. 验证.NET测试文件的路径与名称匹配
如果调整条件后仍看不到.NET结果,大概率是任务找不到测试文件。可以添加一个文件检查任务来确认:
# 放在.NET PublishTestResults任务之前 - task: FindFiles@2 displayName: 'Check for .NET test result files' inputs: searchFolder: '$(System.DefaultWorkingDirectory)/testResults' patterns: '**/TEST-*.xml'
查看这个任务的日志:
- 如果没有找到文件,说明测试生成的文件不在指定路径下,需要调整
searchFolder参数 - 如果文件名不匹配(比如NUnit生成的是
nunit-results.xml),则修改testResultsFiles为对应的文件名或匹配模式
3. 确认测试运行标题的唯一性
你已经给两个任务设置了不同的testRunTitle(.Net tests和Angular),这一步是正确的——Azure DevOps会根据标题生成独立的测试运行记录,不会互相覆盖。
4. 检查管道执行顺序
确保.NET的测试运行和结果发布任务是独立执行的,没有被其他任务中断或跳过。顺序上无论.NET任务在Angular之前还是之后,都不影响结果的保留。
完成以上调整后,你应该能在Azure DevOps的测试页面看到两个独立的测试运行记录,分别对应.NET和Angular的测试结果,且无论测试成功或失败都会被完整保留,满足PR审核的需求。
内容的提问来源于stack exchange,提问作者J4N
相关产品推荐
相关产品推荐

