GitHub 中的测试管理

不幸的是,GitHub 没有很好的方式来跟踪你的测试运行和代码覆盖率的变化,也不能帮助你检测或隔离不稳定的测试。你可以将测试作为工作流的一部分执行,并将结果反馈回来——但是对于报告,你必须依赖于你的测试工具。

一个与 GitHub 集成良好的好解决方案是 Testspace(https://www.testspace.com/)。它是一个 SaaS 服务,对于开源项目免费。设置非常简单——只需从市场安装扩展(https://github.com/marketplace/testspace-com),选择你想要的计划,并授予对你的仓库的访问权限。然后,向你的工作流中添加以下步骤:

- uses: testspace-com/setup-testspace@v1
  with:
    domain: ${{github.repository_owner}}

如果你的仓库是私有的,你必须在 Testspace 中创建一个令牌,并将其作为秘密添加到该步骤中:

token: ${{ secrets.TESTSPACE_TOKEN }}

接下来,你需要添加一个步骤,在执行完测试之后,将测试和代码覆盖率结果推送到 Testspace。你可以使用 glob 语法来指定动态文件夹中的文件。确保即使发生错误,也要执行此步骤(if: '!cancelled()'):

- name: Push test results to Testspace
  run: |
    testspace **/TestResults.xml **/coverage.cobertura.xml
  if: '!cancelled()'

Testspace 提供了可靠的不稳定测试检测功能。它有一个构建机器人,在新的结果到达时会发送通知。你可以通过回复电子邮件来对结果进行评论(见图 12.9):

image 2024 12 27 15 46 39 541
Figure 1. 图 12.9 – 来自 Testspace 的构建结果通知

它会自动作为检查集成到你的拉取请求中(见图 12.10):

image 2024 12 27 15 47 03 146
Figure 2. 图 12.10 – Testspace 集成到拉取请求检查中

Testspace 的 UI 看起来并不华丽,但它有非常丰富的报告和大量的功能(见图 12.11):

image 2024 12 27 15 47 15 664
Figure 3. 图 12.11 – 你的测试指标的丰富报告

如果你还没有测试管理的解决方案,可以尝试 Testspace。如果你已经有了一个解决方案,那么将其集成到你的工作流中应该是简单直接的。