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内部实现了测试覆盖率的插件,使用方便

在Run/Debug configuration界面中的Code Coverage tab页中进行配置,在2、3处可以自定义分析类或者包。


使用gradle插件

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


jenkins插件方式

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



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

class文件路径

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

分析的java代码路径

排除的java文件

构建的指标(max、min)

构建失败指标

4 检测有意义的代码

检测的代码:

服务实现类

工具类

线程相关类

不用检测的代码:

entity类

数据库操作类

异常定义类

常量类

枚举

VO等

生成的代码


5 如何提升测试覆盖率

多写测试用例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,987评论 7 278
  • 2017.2.10晨起感恩 累计35 感恩上师诸佛菩萨的护佑和加持 感恩历代宗亲的传承 感恩老妈养育之恩,感恩老...
    鹊曾阅读 239评论 0 0
  • 答应自己,不再 你现在做的事情 有一些人 一辈子都不能经历 事无大小 用心把它做好 你现在认识的人 有一...
    WTPwhu阅读 672评论 0 2