Jacoco覆盖率工具使用 Jacoco介绍 Java Counters 支持的集成工具 Apache Ant的使用 Jacoco与jenkins,sonar集成 运行jenkins,执行构建任务 SonarQube展示

Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。

官网地址:http://www.eclemma.org/jacoco/

Java Counters

Jacoco包含了多种尺度的覆盖率计数器,包含指令级(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行(Lines)、方法(non-abstract methods)、类(classes)。

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

如上图所示,标示绿色的为分支覆盖充分标黄色的为部分分支覆盖标红色的为未执行该分支

支持的集成工具

Jacoco团队提供了如下的一些集成工具的支持:

Java API

http://www.eclemma.org/jacoco/trunk/doc/api/index.html

Command Line

       http://www.eclemma.org/jacoco/trunk/doc/agent.html

Apache Ant

       http://www.eclemma.org/jacoco/trunk/doc/ant.html

Apache Maven

       http://www.eclemma.org/jacoco/trunk/doc/maven.html

Eclipse EclDmma Plugin

       http://www.eclemma.org/

下面介绍使用ant工具的方法,将使用一个web工程做完示例讲解。

Apache Ant的使用

web工程图

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

执行ant  file task:all-report

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示
Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

执行ant file后生成报告report目录如图所示:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

测试报告

可以单独运行命令:anttest-report生成测试报告;

执行之后会在build/report/html生成测试报告,其中打开index.html如下所示。Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

单击:Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示进入:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

展示测试类名称、测试方法名称 、测试状态 success or fail 、类型及执行时间:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

测试用例覆盖率

可以单独执行命令:antcoverreport;

执行之后会在build/report/coverage下生成覆盖报告,其中打开index.html如下所示:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

单击包名称一层一层单击进入:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

具体颜色定义查看上面的介绍

Jacoco与jenkins,sonar集成

Jenkins中构建简单配置

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 

图仅供参考。

Jacoco与jenkins集成

首先jenkins安装jacoco插件,如图所示:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

建议使用jenkins插件管理进行安装;

对应的Jenkins插件见https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin

配置jacoco插件

在“Addpost-build action”中选择“Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示”,如图所示:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

配置如下部分:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

第一个部分:代码覆盖率统计文件位置;

第二个部分:classes文件位置;

第三个部分:源码文件位置;

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

根据需要填写百分比;

 

Jacoco 与sonar集成

在项目跟目录下面新建一个sonar-project.properties,如web图所示。

编辑此文件:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

执行sonar,配置jenkins部分

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示
 

只需要执行sonar-runner即可,前提是将jenkins与sonar-runner集成在一起;

运行jenkins,执行构建任务

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 

看到类似结果,表示构建结束。

至此,可以通过jenkins查看代码覆盖率等信息。

单击进入测试项目:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 

单击“CodeCoverage Trend“部分,进入详细页面:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

单击进入详细的覆盖率文件:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

SonarQube展示

进入sonarqube项目:http://172.16.XXX.XXX9000/

单击工程jacoco_test_project:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

进入详细页面:

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

其中圈中左边为单元测试覆盖率,右边为单元测试统计;

 

单击Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示进入

Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 

通过下拉框选择查看行覆盖情况,未覆盖行情况,分支覆盖情况,未覆盖分支情况;

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

 

单击Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示 进入测试情况信息页面:

 Jacoco覆盖率工具使用
Jacoco介绍
Java Counters
支持的集成工具
Apache Ant的使用
Jacoco与jenkins,sonar集成
运行jenkins,执行构建任务
SonarQube展示

如果存在错误,此部分会展示错误情况。