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

如何为Azure DevOps PublishTestResults@2任务添加额外测试附件?

解决Azure DevOps PublishTestResults任务无法附加整个文件夹的问题

问题原因

你当前的配置无法生效,核心原因是对PublishTestResults@2的参数逻辑理解有误:

  • publishRunAttachments: true仅会解析测试结果XML文件,自动上传XML中引用的附属文件(比如测试框架生成的截图、关联日志等),不会直接遍历并上传指定文件夹的所有内容。
  • searchFolder参数仅用于定位testResultsFiles指定的XML测试结果文件,不是用来设置要附加的文件夹路径。

解决方法

方法1:在测试代码中关联附件到测试结果XML(推荐)

通过测试框架的API,将需要附加的文件路径写入测试结果XML的关联节点,这样PublishTestResults任务会自动识别并上传这些文件。

以xUnit框架为例,可通过ITestOutputHelper输出附件路径:

using Xunit;
using Xunit.Abstractions;
using System.IO;

public class SampleTests
{
    private readonly ITestOutputHelper _testOutput;

    public SampleTests(ITestOutputHelper testOutput)
    {
        _testOutput = testOutput;
    }

    [Fact]
    public void TestWithAttachment()
    {
        // 指定要附加的文件路径
        string attachmentPath = Path.Combine(Directory.GetCurrentDirectory(), "test-results", "test-log.txt");
        // 将路径写入测试输出,xUnit会自动将其纳入测试结果XML
        _testOutput.WriteLine($"Attachment:{attachmentPath}");
        
        // 执行测试逻辑...
    }
}

方法2:使用UploadTestResultsAttachments@1任务手动上传文件夹

通过专门的UploadTestResultsAttachments@1任务,直接指定文件夹路径,将其中所有文件作为附件上传到测试运行。需注意该任务要在PublishTestResults之后执行,且需引用测试运行ID。

示例YAML配置:

- task: PublishTestResults@2
  displayName: 'Publish Test Results'
  inputs:
    testResultsFiles: |
      $(System.DefaultWorkingDirectory)/outputxunit.xml
    publishRunAttachments: true
    condition: succeededOrFailed()
  name: PublishTestResultsTask # 定义任务名称,用于后续获取测试运行ID

- task: UploadTestResultsAttachments@1
  displayName: 'Upload Test Folder Attachments'
  inputs:
    testRunId: $(PublishTestResultsTask.TestRunId) # 引用上一步生成的测试运行ID
    attachmentType: 'GeneralAttachment'
    attachmentPath: '$(System.DefaultWorkingDirectory)/test-results'
  condition: succeededOrFailed()

方法3:通过Azure DevOps REST API上传附件

如果需要更灵活的控制,可调用Azure DevOps REST API手动上传附件:

  1. 在PublishTestResults任务执行后,通过任务输出变量TestRunId获取测试运行ID。
  2. 调用POST https://dev.azure.com/{组织名}/{项目名}/_apis/test/Runs/{测试运行ID}/attachments?api-version=7.1-preview.1接口,传入文件内容及元数据完成上传。

内容的提问来源于stack exchange,提问作者Sebastian G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:27:25