1 JaCoCo介绍

JaCoCo是EclEmma团队基于多年覆盖率库使用经验总结而研发的一个开源的Java代码覆盖率库。

2 JaCoCo覆盖率计数器

JaCoCo 包含了多种尺度的覆盖率计数器(Coverage Counters),包含指令级(Instructions,C0 coverage)、分支(Branches,C1 coverage)、圈复杂度(Cyclomatic Complexity)、行(Lines)、方法(Methods)、类(Classes)。具体可参考JaCoCo覆盖率计数器

3 Gradle单模块接入

在工程的buid.gradle文件中添加如下内容:

//Applying the JaCoCo plugin
plugins {
id 'jacoco'
} // Configuring JaCoCo plugin settings
jacoco {
toolVersion = "0.8.4"
//reportsDir = file("$buildDir/customJacocoReportDir")
} //Configuring test task
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.enabled true
//html.destination file("${buildDir}/jacocoHtml")
}
} check.dependsOn jacocoTestReport

编译完成后会在 ${buildDir}/build/reports/jacoco下生成报告。

如果在Spring Boot的框架下运行,需要在build.gradle中加下面一段,否则执行jacocoTestReport task会被skipped。

tasks.withType(Test) {
scanForTestClasses = false
include "**/*Test.class"
}

4 Gradle多模块接入

在父子工程的buid.gradle文件中添加如下内容,注意父和子都要添加:

//Applying the JaCoCo plugin

apply plugin:'jacoco'

// Configuring JaCoCo plugin settings
jacoco {
toolVersion = "0.8.4"
//reportsDir = file("$buildDir/customJacocoReportDir")
} //Configuring test task
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.enabled true
//html.destination file("${buildDir}/jacocoHtml")
}
} check.dependsOn jacocoTestReport

编译完成后会在对应的子工程的 ${buildDir}/build/reports/jacoco下生成报告。

5 Maven单模块接入

在工程的pom.xml文件中添加如下内容:

<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

执行Run As Maven build:

clean install 

在项目target/site/jacoco目录下找到index.html文件,即可查看报告。

6 Maven多模块接入

Maven多模块是指存在父子关联的项目,这类项目中存在多个pom.xml文件,父项目pom.xml文件中包括多个<module>标签,指明它的子模块有哪些,子项目pom.xml中能继承父项目配置的依赖,通过<parent>标签能知道它的父模块是谁。

6.1 父pom中增加依赖

在多模块项目中找到父pom.xml文件,添加如下内容:

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.</version>
</plugin>
</plugins>
</pluginManagement>
</build>

6.2 新建子覆盖率模块

该模块添加所有要进行单元测试的子工程的依赖,例如,新增一个jacoco-coverage的子模块,在pom.xml文件里添加如下内容:

增加<dependency>指定统计哪些module

 <dependencies>
<dependency>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>simple-weather</artifactId>
<version>1.0.-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.sonatype.mavenbook.multi</groupId>
<artifactId>simple-webapp/artifactId>
<version>1.0.-SNAPSHOT</version>
</dependency>
</dependencies>

添加jacoco-maven-plugin

<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

6.3 父pom中增加该模块

<modules>
<module>simple-weather</module>
<module>simple-webapp</module>
<module>jacoco-coverage</module>
</modules>

执行Run As Maven build:

clean install

在子项目jacoco-coverage生成的target/site/jacoco-aggregate目录下找到index.html文件并打开即可查看报告。

以下给出一个官网提供的报告

使用JaCoCo统计单元测试代码覆盖率的更多相关文章

  1. jacoco统计自动化代码覆盖率

    jacoco统计自动化代码覆盖率 1. 简介 1.1. 什么是Jacoco Jacoco是一个开源的代码覆盖率工具,可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以 ...

  2. jacoco统计自动化测试代码覆盖率

    一.下载jacoco, ant工具 jacoco: http://www.eclemma.org/jacoco/: ant: http://ant.apache.org 并添加到环境变量: 二.不停j ...

  3. Jenkins集成jacoco收集单元测试覆盖率

    Jenkins集成jacoco收集单元测试覆盖率 2020-02-28 目录 0 整体思路1 Jenkins创建JacocoIntegrateTestDemo项目2 配置源码管理3 配置Build4 ...

  4. Jacoco收集单元测试、集成测试和系统功能测试覆盖率

    Jacoco收集单元测试.集成测试和系统功能测试覆盖率 2020-02-27  目录 1 安装版本2 被测系统代码示例3 收集单元测试覆盖率4 收集集成和功能测试覆盖率 代码覆盖率可在单元测试.系统测 ...

  5. Xcode5 统计单元测试覆盖率(仅限XCTest)

    概要 通过本篇文章,你将学会如何在Xcode5下使用统计XCTest测试代码的覆盖率,以及如何快速得到测试覆盖率的图形化报表. 为什么要特别说明Xcode5下的代码覆盖率统计,原因是,以前的方法在新环 ...

  6. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

    1.VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试 https://download.csdn.net/download/qq_39441918/10522539 2.*注意 ...

  7. MSTest/NUnit 单元测试 代码覆盖率试用 OpenCover 和ReportGenerator

    VS自带是单元测试代码覆盖率(VS自带这个是最佳选择)需要企业版才有.很蛋疼...... 1.下载安装OpenCover 和ReportGenerator. 关于这2个是干啥的百度下.简单说就是可以分 ...

  8. Jacoco统计web接口/功能测试的代码覆盖率【转】

    原文:https://www.jianshu.com/p/d2fd02d4164b 一.代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用 ...

  9. 单元测试-代码覆盖率工具 -- JaCoCo

    最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元 ...

随机推荐

  1. golang数据结构之递归解决迷宫问题

    简单来说:递归就是函数/方法自己调用自己,只是每次传入不同的变量. 递归可以解决各种数学问题:n皇后问题.阶乘问题.汉诺塔.迷宫问题.球和篮子问题等等: maze.go package maze im ...

  2. 【STM32H7教程】第31章 STM32H7的USART应用之RS485

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第31章       STM32H7的USART应用之RS48 ...

  3. C语言程序设计100例之(7):级数求和

    例7    级数求和 题目描述 已知: Sn =1+1/2+1/3+…+1/n.显然对于任意一个整数 k,当 n 足够大的时候,Sn>k. 现给出一个整数 k,要求计算出一个最小的 n,使得 S ...

  4. 扎心一问!你凭什么成为top1%的Java工程师?

    目录 1.解决生产环境里的突发故障 2.对棘手的线上性能问题进行优化 3.锻造区别于普通码农的核心竞争力 4.打磨架构设计能力 5.你凭什么成为 top1%?   你工作几年了? 是否天天CRUD到吐 ...

  5. 10-scrapy框架介绍

    Scrapy 入门教程 Scrapy 是用 Python 实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通 ...

  6. C++ const使用总结

    这里针对C++中const的一些一般用法进行一下简单的总结 一.定义常量 常量不可修改 : ; 与#define宏定义常量的区别:(1)const常量具有类型,编译器可以进行安全检查:#define宏 ...

  7. idea使用lombok不生效的解决办法

    file-->setting-->plugins点击下方的 browse repositories. 搜索lombok plugin. 安装后,重启. file-->setting- ...

  8. python基础(19):random模块、time模块、sys模块、os模块

    1. random模块 导入的是random模块,格式是: import random 1.1 随机小数 取随机小数 : 数学计算. print(random.random()) # 取0-1之间的小 ...

  9. MySQL学习——操作表里的数据

    MySQL学习——操作表里的数据 摘要:本文主要学习了使用DML语句操作表里数据的方法. 插入数据 语法 通过传入数据插入: insert into 表名 [(列名1, …, 列名n)] values ...

  10. SSRS 报表开发过程中,除数为0的处理

    这里仅供记录,方法并非原创 在SSRS报表开发过程中,我们经常会遇到除数为0的计算 一般来说,我们都是通过IIF来进行处理,比如: =IIF(B=0,0,A/B) 但实际效果,则是,如果B=0的时候, ...