本文大纲

《我的敏捷软件项目管理实践》

代码覆盖率指标说明

第六章 如何做好编码

目标

前面使用已使用JaCoCo覆盖率工具,执行代码覆盖率分析及生成了报告。

本文讲解怎么阅读这个报告 。

覆盖率指标说明

指标 说明
Instructions Java字节指令的覆盖率。执行的最小单位,和代码的格式无关。
Branches if\else代码逻辑分支覆盖率。注意异常处理不算做分支。 常用
Cxty(Cyclomatic Complexity) 圈复杂度, Jacoco 会为每一个非抽象方法计算圈复杂度,并为类、包、组(groups)计算复杂度。 圈复杂度简单地说就是为了覆盖所有路径,所需要执行单元测试数量,圈复杂度大说明程序代码可能质量低且难于测试和维护。
Lines 代码行覆盖率,只要本行有一条指令被执行,则本行则被标记为被执行。 常用
Methods 方法覆盖率,任何非抽象的方法,只要有一条指令被执行,则该方法就会被计为被执行。 常用
Classes 类覆盖率,所有类,包括接口,只要其中有一个方法被执行,则标记为被执行。注意:构造函数和静态初始化块也算作方法。 常用

实例

工程级覆盖率报告

如下图是工程级覆盖率报告

image2023-6-9_13-46-58.png

image2023-6-9_13-48-17.png

包级覆盖率报告

如下图是Pageage包级覆盖率报告,本包下有8个类文件。

image2023-6-7_13-43-4.png

类级覆盖率报告

如下图是类级覆盖率报告,本包下有8个类文件。本类中有15个方法,可看到某个方法有N行代码及单元测试覆盖的行数。

image2023-6-7_13-45-7.png

方法级覆盖率报告

点击某个方法名,可展开看到源代码。

红色的是单元测试未能覆盖的行。

绿色的是单元测试已能覆盖的行。

image2023-6-9_13-49-16.png