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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:37:40