软件帮帮网
柔彩主题三 · 更轻盈的阅读体验

如何生成测试覆盖率报告:实用工具与操作指南

发布时间:2026-01-20 04:00:55 阅读:262 次

测试覆盖率报告有啥用

写代码的时候,谁都不想上线后出 bug。跑完单元测试,光看“全部通过”可不够,你还得知道到底测了哪些代码,哪些地方没覆盖到。测试覆盖率报告就是干这个的——它告诉你哪些代码被执行过,哪些是“盲区”。

比如你写了个用户登录功能,测试只跑了正确密码的情况,忘了试错误密码或者空输入,这种遗漏覆盖率报告一眼就能看出来。

常用工具有哪些

不同语言有对应的工具,挑几个常见的说说。

Java:JaCoCo

在 Maven 项目里加个插件就行:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.11</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

执行 mvn test 后,报告会生成target/site/jacoco/ 目录下,打开 index.html 就能看到详细结果。

Python:coverage.py

先装包:pip install coverage,然后运行测试:

coverage run -m unittest discover
coverage html

执行完会在当前目录生成一个 htmlcov 文件夹,点开里面的 index.html,每行代码有没有被覆盖都标得清清楚楚。

JavaScript:Istanbul(via Jest)

如果你用的是 Jest,直接加个参数就能出报告:

jest --coverage

Jest 默认用 Istanbul,运行后会在终端显示覆盖率摘要,同时生成 coverage 目录,里面有详细的 HTML 报告。

怎么看懂报告

打开 HTML 报告后,通常能看到四类数据:语句覆盖率、分支覆盖率、函数覆盖率、行覆盖率。重点关注红色标记的代码块,这些是没被测试触达的部分。

比如某个 if 判断只走了 true 分支,else 部分没走,就会标黄或红。这时候你就该补个测试用例了。

集成到日常开发

别等到上线前才看覆盖率。把生成报告的命令加到 CI 流程里,比如 GitHub Actions 或 Jenkins,每次提交代码自动跑一遍,还能设置最低阈值,低于 80% 就报错提醒。

这样团队成员随时都能看到质量状态,也不会因为忙就忽略测试完整性。