jacoco-java测试覆盖率工具

1 为什么要关注测试覆盖率

    覆盖率是程序编程的最后一环,单元测试验证代码,而覆盖率验证测试用例。

   代码覆盖率常常被拿来作为衡量测试好坏的指标

   开发关注覆盖率是为了更加深入的测试代码,不留死角,避免隐藏bug的出现

   在对外说“代码很牛,没有bug”的时候,说服别人需要有数据


2 jacoco是什么

JaCoCo是一个开源的覆盖率工具(官网地址: http://www.eclemma.org/JaCoCo/ ),

它针对的开发语言是java。

实现:使用asm动态修改字节码,在代码中进行打桩,从而进行统计。

模式:插件模式、命令行模式

使用:1 执行测试用例的时候使用jacoco参数,会生成覆盖率分析文件。2 使用jacoco命令根据exec文件生成覆盖率报告。

数据指标:

指令级覆盖(Instructions,C0coverage)

分支(Branches,C1coverage)

圈复杂度(CyclomaticComplexity)

行覆盖(Lines)

方法覆盖(non-abstract methods)

类覆盖(classes)


3  怎样分析测试覆盖率

IDE方式、gradle、jenkins持续集成

IDE方式:IDEA内部实现了测试覆盖率的插件,使用方便

jacoco-java测试覆盖率工具_第1张图片
jacoco-java测试覆盖率工具_第2张图片
在Run/Debug configuration界面中的Code Coverage tab页中进行配置,在2、3处可以自定义分析类或者包。


jacoco-java测试覆盖率工具_第3张图片

使用gradle插件

在目前的项目使用的是gradle构建工具,项目中使用了java、jacoco插件,tasks中有jacoco默认的任务jacocoTestReport。运行该任务的前提是要执行test任务,即要执行测试用例。


jacoco-java测试覆盖率工具_第4张图片
jacoco-java测试覆盖率工具_第5张图片

jenkins插件方式

先执行测试用例,再执行sonar静态分析,如果静态分析不通过,则本次构建失败;如果sonar通过,则jacoco分析.exec文件,得出覆盖率。


jacoco-java测试覆盖率工具_第6张图片


jacoco-java测试覆盖率工具_第7张图片
jacoco-java测试覆盖率工具_第8张图片

覆盖率文件(执行测试用例之后会生成)

class文件路径

java源文件路径(如果找不到,看不到具体的代码覆盖信息)

分析的java代码路径

排除的java文件

构建的指标(max、min)

构建失败指标

4 检测有意义的代码

检测的代码:

服务实现类

工具类

线程相关类

不用检测的代码:

entity类

数据库操作类

异常定义类

常量类

枚举

VO等

生成的代码


5 如何提升测试覆盖率

多写测试用例

你可能感兴趣的:(jacoco-java测试覆盖率工具)