Rust 入门:测试覆盖率详解(Test Coverage)

写测试很重要,但仅仅“写了”还不够。我们还要知道:测试到底覆盖了代码的哪些部分?是否还有遗漏?

这就用到了:测试覆盖率(test coverage)。它能帮我们看清测试是否真正测试到了关键代码路径。


一、什么是测试覆盖率?

测试覆盖率就是:你的测试触发并运行了多少百分比的代码

举个例子:

  • 如果你有 100 行函数代码,
  • 但测试只触发了 40 行,
  • 那你的覆盖率就是 40%。

Rust 本身不内建测试覆盖率工具,但可以借助外部工具来完成。


二、最常用工具:cargo-tarpaulin

这是目前 Rust 社区使用最广泛的测试覆盖率工具。

1. 安装

cargo install cargo-tarpaulin

2. 生成覆盖率报告

cargo tarpaulin

运行后会输出类似这样:

Running tests...
Coverage Results:
files: 3
lines: 120
covered lines: 90
coverage: 75.0%

三、生成 HTML 可视化报告

让报告更直观(需要加 --out Html):

cargo tarpaulin --out Html

生成的报告默认在 tarpaulin-report.html 文件里,浏览器打开查看。


四、测试哪些内容会被统计?

  • src/lib.rs 和其他模块中公开函数的逻辑 ✅
  • 单元测试(#[test]) ✅
  • 集成测试(放在 tests/ 文件夹) ✅
  • 宏展开、泛型代码 ✅(部分情况下,泛型可能需要特别处理)

五、提示:常见问题和建议

  • 使用 --tests 可以只统计集成测试的覆盖率。
  • 如果某些文件总是 0%,可能是没被模块引入或者测试没触发逻辑。
  • 不建议强求 100% 覆盖率,但关键代码路径应至少覆盖。

六、小结

工具/概念 用法或说明
cargo-tarpaulin Rust 中最常用的覆盖率工具
安装命令 cargo install cargo-tarpaulin
运行并查看覆盖率 cargo tarpaulin
生成 HTML 报告 cargo tarpaulin --out Html
覆盖率重要性 帮助你找出测试盲区,提高代码可靠性

测试写了 ≠ 覆盖到了!
利用测试覆盖率工具,真正做到:写测试 -> 跑测试 -> 查缺补漏。


Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐