Rust 测试洞察
Tuist 会报告来自 cargo test 的单个测试结果,包括单元测试、集成测试和文档测试。无需额外的 Rust 依赖或测试运行器。
- 请按照Rust 项目设置进行操作。
报告你的测试运行#
tuist cargo test --workspace
配置好 mise Cargo 包装器后,你可以继续输入 cargo test。Cargo 仍会使用其常规参数、输出和退出码来编译并运行你的测试。报告失败不会改变你的测试结果。
你可以像往常一样选择包或过滤测试:
tuist cargo test -p store
tuist cargo test authentication
Tuist 跟踪的内容#
- 已完成测试套件中通过、失败和被忽略的测试。
- 单元测试、集成测试和文档测试。
- 整个套件的耗时。
- 可用的分支、提交、CI 和运行器元数据。
被过滤的测试以及在失败后未执行的测试永远不会被报告为通过。结果会显示在仪表板的测试下。
包、模块和测试用例#
Tuist 按 Cargo 包和目标对结果进行分组。Rust 模块路径将目标内的各个测试分组:
| 仪表板标签 | Rust 含义 | 示例 |
|---|---|---|
| 模块 | Cargo 包和目标 | store::api |
| 测试套件 | Rust 模块路径 | api::authentication |
| 测试用例 | 单个测试 | rejects_invalid_token |
文档测试使用单独的模块,例如 store::doctest/store。它们的名称包含源位置,因此移动示例可能会改变其标识。
文档测试和耗时#
文档测试会使用你常规的测试命令运行,包括 compile_fail、should_panic 和 no_run 示例。要仅运行文档测试:
tuist cargo test --doc
稳定的 libtest 会报告整个套件的耗时,但不会报告单个测试的耗时。不可用的计时数据会从每个用例的耗时历史和耗时分析中排除,而测试结果仍会贡献于可靠性和运行次数统计。
报告限制#
单个结果是从 Cargo/libtest 的默认输出中收集的。使用 --no-run、--list、静默或 Cargo 详细输出、替代格式或未捕获测试输出的命令会正常运行,但不会报告单个测试。自定义测试 harness、不完整的摘要、模糊的目标归属以及过大的报告不会被上传。
如果工作区包具有同名集成目标,请使用 -p <package> 选择其中一个。报告支持精确的工作区包名称;依赖包、带版本限定符的选择器和通配符会正常执行,但不会被报告。绝对文档测试路径会被省略,以避免将检出路径纳入测试标识。
Tuist 在收集结果时会流式输出。这可能会影响自动颜色检测。在 Cargo 退出后仍保持输出管道打开的后台进程可能导致报告被省略,但不会改变 Cargo 的退出状态。
可靠性和选择#
使用不稳定测试检测和隔离来调查不稳定的测试,并将其静音或跳过。测试分片会将整个 Cargo 目标分布到 CI 工作节点上。普通 Cargo 测试运行不支持覆盖率摄入、基于覆盖率的测试选择以及一次构建分发。
故障排除#
如果测试运行未出现在仪表板中,请启用调试输出来查看其报告未发送的原因:
TUIST_DEBUG=1 tuist cargo test --workspace