什么是Jacoco
Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。
Jacoco集成方式
Jacoco团队提供了如下的一些集成工具的支持:
Java API
Apache Ant
Apache Maven
Eclipse EclDmma Plugin
Jacoco下载地址
官方下
On-the-fly注入模式
On-the-fly 方式无须入侵应用启动脚本,只需在 JVM 中通过 -javaagent 参数指定 jar 文件启动 Instrumentation 的代理程序,代理程序在通过 Class Loader 装载一个 class 前判断是否需要注入 class 文件,将统计代码插入 class ,测试覆盖率分析就可以在 JVM 执行测试的过程中完成。
其原理如下图所示
Jacoco与jenkins集成
安装jacoco插件
Jenkins中构建参数
关键maven参数:
org.jacoco:jacoco-maven-plugin:prepare-agent:命令行引用jacoco-maven-plugin插件,减少对开发源码的依赖。
-Dmaven.test.skip=false:启用代码中的单元测试,开发代码中一般默认是关闭的。
-Dmaven.test.failure.ignore=true:忽略失败的单元测试用例继续执行。
配置jacoco插件
在“Addpost-build action”中选择“Reccord Jacoco coverage report”
配置文件路径:
Path to exec files :代码覆盖率统计文件位置;
Path to class directorie:classes文件位置;
Path to source directories:源码文件位置;
根据需要填写覆盖率要求;
Jacoco覆盖率报告