Elixir 测试洞察
Tuist 的 Hex 包会在每次测试运行后上传你的 Elixir 项目的测试结果,让你直接在 Tuist 仪表盘中查看测试性能和不稳定测试。
要求
上报测试运行#
共享设置会安装测试集成。继续使用 mix test,参数、输出和退出码保持不变:
bash
mix test test/my_app_test.exs:12 --trace
Tuist 会在运行结束时上报;无需额外的测试别名。
你可以在 Tuist 仪表盘中访问测试洞察,并查看其随时间的变化:

追踪内容#
该包会收集 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