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

寻求可复用GitHub Action:在构建汇总页展示Karate测试图形化结果

解决Karate测试在GitHub构建汇总页展示图形化汇总的方案

先排查原有配置失效的问题

你的dorny/test-reporter配置未生效,大概率是路径问题导致的:

  • GitHub Actions中工作目录是仓库根目录,绝对路径/app/不符合默认工作区规则,改成相对路径通配符**/target/surefire-reports/*.xml即可覆盖所有子目录下的报告文件
  • 可在测试步骤后加一句run: ls -la **/target/surefire-reports/,确认报告文件是否生成

实现图形化汇总的两种方法

方法一:利用Checks标签页生成自带图形的测试报告

修正后的dorny/test-reporter配置会在GitHub仓库的Checks标签页生成带统计图形(饼图/条形图)的测试汇总,直接展示通过/失败/跳过数量:

- name: Karate Test Result Report
  uses: dorny/test-reporter@v1
  if: success() || failure()    # 测试失败也执行
  with:
    name: Karate Test Results
    path: "**/target/surefire-reports/*.xml"    # 修正为相对通配路径
    reporter: java-junit
    fail_on_error: true

方法二:在PR评论中展示图形化汇总表格

如果需要直接在PR评论里展示直观的汇总,可先解析JUnit报告提取统计数据,再生成带emoji的markdown表格:

# 1. 先运行Karate测试(确保生成报告)
- name: Run Karate Integration Tests
  run: mvn test -Dtest=KarateTests

# 2. 解析JUnit报告,提取测试统计数据
- name: Parse Test Statistics
  id: test-stats
  run: |
    # 用Python解析XML(无需额外安装依赖,GitHub Actions默认带Python)
    python3 - << 'EOF'
    import xml.etree.ElementTree as ET
    import glob

    passed, failed, skipped = 0, 0, 0
    for report in glob.glob('**/target/surefire-reports/*.xml', recursive=True):
        tree = ET.parse(report)
        for case in tree.findall('.//testcase'):
            if case.find('failure') or case.find('error'):
                failed += 1
            elif case.find('skipped'):
                skipped += 1
            else:
                passed += 1
    print(f"passed={passed}")
    print(f"failed={failed}")
    print(f"skipped={skipped}")
    EOF >> $GITHUB_OUTPUT

# 3. 添加PR评论展示图形化汇总
- uses: mshick/add-pr-comment@v2
  if: always()
  with:
    status: ${{ job.status }}
    message: |
      ### 🧪 Karate集成测试汇总
      | 测试状态 | 数量 |
      |----------|------|
      | ✅ 通过 | ${{ steps.test-stats.outputs.passed }} |
      | ❌ 失败 | ${{ steps.test-stats.outputs.failed }} |
      | ⏭️ 跳过 | ${{ steps.test-stats.outputs.skipped }} |
      
      ${{ job.status == 'success' && '🎉 所有测试通过!' || '⚠️ 部分测试失败,请查看详情。' }}

内容的提问来源于stack exchange,提问作者James Bender

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:46:30