Jacoco简介
JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years.
JaCoCo是一个免费的Java代码覆盖库,由EclEmma团队基于多年来使用和整合现有库的经验教训创建。
官网:https://www.eclemma.org/jacoco/index.html
开发环境
Android项目使用Jacoco
jacoco-Android
Gradle插件为Android单元测试创建JaCoCo测试报告
https://github.com/arturdm/jacoco-android-gradle-plugin
Gradle中配置Jacoco
1.配置project/build.gradle
1  | buildscript {  | 
2.配置project/jacoco.gradle
1  | //apply plugin: 'jacoco'  | 
3.配置project/app/build.gradle
1  | apply from: "$project.rootDir/jacoco.gradle"  | 
编写工具类
1  | public class MathUtil {  | 
编写测试工具类
1  | import org.junit.Test;  | 
源码来源:https://www.ibm.com/developerworks/cn/java/j-lo-jacoco/
查看结果

右击运行,结果可在app\build\JacocoReport\jacocoTestDebugUnitTestReport\html\index.html中查看
Jenkins集成Jacoco
安装Jacoco插件
插件管理中搜索jacoco安装即可
配置构建
1  | ##jacocoTestReport 无数据  | 

配置构建后操作
1.Record JaCoCo coverage report

1  | ##**/outputs/code-coverage/connected/coverage.ec 无数据  | 
2.Publish Junit test result report

1  | app/build/test-results/testDebugUnitTest/*.xml  | 
查看测试报告结果
立即构建后在Test Result中查看

SonarQube整合Jacoco
可以为SonarQube提供测试执行和代码覆盖率报告。
先决条件
Java插件将重用报表并不生成它们,因此在尝试配置分析以导入这些报表之前,需确保它们已正确生成,而不是空的。
- 测试执行报告必须符合JUnit XML格式。
 - 代码覆盖率报告必须由JaCoCo生成。
 
配置Jacoco
在Jenkins项目中配置构建Execute SonarQube Scanner,新增jacoco配置

1  | sonar.core.codeCoveragePlugin=jacoco  | 
立即构建
重新立即构建即可在SonarQube中查看覆盖率
相关主题
- JaCoCo Java Code Coverage Library , EclEmma 官方网站.
 - https://github.com/arturdm/jacoco-android-gradle-plugin , Gradle插件.
 - JaCoCo:分析单元测试覆盖率的利器 , IBM关于单元测试的文章.