跳至内容

Elixir 测试洞察

Tuist 的 Hex 包会在每次测试运行后上传你的 Elixir 项目的测试结果,让你直接在 Tuist 仪表盘中查看测试性能和不稳定测试。

要求

上报测试运行#

共享设置会安装测试集成。继续使用 mix test,参数、输出和退出码保持不变:

bash
mix test test/my_app_test.exs:12 --trace

Tuist 会在运行结束时上报;无需额外的测试别名。

你可以在 Tuist 仪表盘中访问测试洞察,并查看其随时间的变化:

Phoenix 应用的测试仪表盘

追踪内容#

该包会收集 ExUnit 的结果,包括:

  • 单个测试的通过/失败状态和耗时
  • 每个测试所属的模块和 describe 块
  • 每次失败的消息和位置
  • 跨运行的不稳定测试检测
  • 分支和提交,以及在持续集成中的提供商和运行
  • 在持续集成中,检出仓库的 Git 历史

Doctest 会像其他测试一样被上报。使用 --cover 时,还会上传运行的行覆盖率:参见 Elixir 代码覆盖率。

Note

该包通过一个 ExUnit 格式化器进行上报,它会与你已使用的格式化器并列添加。如果你在命令行中传入 --formatter,Mix 会替换整个列表,因此不会上报该运行,任务会对此发出警告。

Git 历史#

在持续集成中,该包还会上传检出仓库的提交历史:提交 SHA、其父提交、提交日期,以及运行及其拉取请求的基础分支所在的分支。不会上传文件内容、提交消息或作者信息。这能让 Tuist 知道哪些提交进入了你的默认分支,例如合并队列测试过的提交。该包会读取检出仓库已有的历史;当检出仓库不包含基础分支时,它会向远程请求最新提交(git ls-remote)。除代码覆盖率(--cover)外,它不会获取历史。

变量 效果
TUIST_GIT_UPLOAD_ENABLED=false 不读取或上传任何 Git 历史。
TUIST_GIT_UNSHALLOW_ENABLED=false 仅读取检出仓库,不联系远程。

故障排查#

上报永远不会改变测试结果:如果无法发送报告,运行会按原本方式退出且不打印任何内容。要查看报告未发送的原因,请设置 TUIST_DEBUG=1:

bash
TUIST_DEBUG=1 mix test