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

如何将XCODE生成的XCTest JUnit测试报告带截图集成到Azure Pipelines?

XCTest JUnit报告集成Azure Pipelines失败截图关联方案

核心原理

原生XCTest生成的JUnit报告默认不包含附件标识,Azure Pipelines测试模块需要显式匹配测试用例和对应截图文件才能实现关联展示,整个流程分为测试侧适配、报告改造、流水线配置三个环节。

具体实现步骤

  • 测试侧配置失败自动截图
    在XCTest的公共基类重写tearDown方法,判断当前用例执行状态为失败时,调用系统截图接口生成截图,统一按{测试类名}_{测试方法名}_{时间戳}.png的规则命名,保存到项目下固定目录如./failure_screenshots。
  • 改造JUnit报告增加附件关联标识
    原生xcodebuild输出的JUnit报告没有附件字段,可以用两种方式改造:
    • 用xcpretty自定义格式化规则,在生成JUnit报告时自动给失败用例添加<attachment>子节点,值为对应截图的文件名
    • 用Python/Shell脚本批量修改已生成的junit.xml,给失败的<testcase>节点插入<attachment>子节点,内容匹配对应截图文件名
      改造后的testcase节点示例:
    UserLoginTest_test_password_error_scene_1699876543.png
  • 配置Azure Pipelines任务关联附件
    修改流水线yaml配置,在PublishTestResults@2任务中增加attachmentsFolder参数,指向测试截图存放的目录,Azure会自动扫描该目录下的文件,和JUnit报告中<attachment>节点的文件名匹配,关联到对应测试用例的详情页。
    配置片段示例:
    - task: PublishTestResults@2
      inputs:
        testResultsFormat: 'JUnit'
        testResultsFiles: '**/junit.xml'
        attachmentsFolder: '$(Build.SourcesDirectory)/failure_screenshots'
        failTaskOnFailedTests: true
    
    如果不想改造JUnit报告,也可以直接把整个截图目录作为构建产物上传,在测试用例的失败日志中输出对应截图的文件名,测试人员可以直接在构建产物中搜索文件名找到对应截图。

验证方法

流水线执行完成后,进入测试结果页,点击任意失败的测试用例,在附件标签栏即可看到关联的截图,支持直接在线预览。

内容的提问来源于stack exchange,提问作者Janina X

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:36:02