使用JaCoCo统计单元测试代码覆盖率

1 JaCoCo介绍

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

2 Maven单模块接入

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

<build>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.4</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文件,即可查看报告。

3 Maven多模块接入

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

3.1 父pom中增加依赖

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

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

3.2 新建子覆盖率模块

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

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

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

添加jacoco-maven-plugin

<build>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.4</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>

3.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文件并打开即可查看报告。

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

原文地址:https://www.cnblogs.com/ycyzharry/p/10992416.html

时间: 2024-07-29 02:10:58

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

通过JaCoCo统计接口测试代码覆盖率

通过JaCoCo统计接口测试代码覆盖率 JaCoCo 需求:统计微服务接口测试的代码覆盖率 JaCoCo的ant与maven方法都是在编译期对单元测试的覆盖率统计 JaCoCo的可以开启一个agent服务收集运行过程中的代码执行覆盖率. 主要会用到jacoco 的两个功能:agent和cli 覆盖率收集 1. 收集方式 2. JaCoCo使用 Sprint Boot测试项目 1. 创建项目 2. 工程结构 3. CountController.java 4. 上传代码到github 覆盖率统计测

python统计单元测试代码覆盖率

1.1.1实现过程 准备工作首先在运行命令前,我们需要安装一个包:coverage命令如下:pip install coverage #(py -3 -m pip install coverage)安装成功后,会出现Successfully等字样. 实现代码覆盖率命令一共涉及到的命令有3个,这里先全部给出,后续在用例子做详细使用讲解:第一个命令为运行一下你的测试脚本文件,第二个命令会在控制台打印出覆盖率报告信息,第三个命令会在同级目录下生成一个htmlcov的文件夹,打开文件夹中的index.h

Jenkins中用jacoco统计gradle项目的代码覆盖率

1.针对gradle的项目,首先需要在build.gradle文件中添加jacoco插件,并且添加到依赖中 2.在build.gradle文件中添加执行单元测试的task,如图 3.前提条件,在Jenkins中添加jacoco插件,在Jenkins中配置job,即统计单元测试覆盖率的job 主要的构建脚本如下: 4.统计的结果如下:

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

最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的数量,导致底下的开发人员投机取巧,编写出大量的重复测试,数量上去了,质量却依然原地踏步.相比单纯追求单元测试的数量,分析单元测试的代码覆盖率是一种更为可行的方式.JaCoCo(Java Code Coverage)就是一种分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中哪些部分被

利用JaCoCo统计接口测试中代码覆盖率

?        做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求.这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆盖率,场景的覆盖率,接口的覆盖率,代码的覆盖率等,本文介绍接口测试的代码覆盖率.那么我们来看看如何是实现的. 1.环境的搭建 1.1搭建 ant 环境 https://ant.apache.org/bindownload.cgi 我下载的是1.10.7版本,这个是因为 每个版本对应的java的版本

通过maven插件方式使用Jacoco统计代码覆盖率

<build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version> <executions> <execution> <id>default-prepare-agent</i

MV*浏览器单元测试+代码覆盖率

好久没写BLOG了,最近弄了一个前端单元测试加代码覆盖率测试框架,使用起来非常简单,具体使用方法和介绍如下,先上图,结果如下: github地址:https://github.com/wf123537200/FeTestAndCov frontEnd-test-and-cov 这是一个便捷,快速的,浏览器友好的单元测试框架. 提供功能为: 1.提供实时前端单元测试结果. 2.提供单元测试覆盖率实时显示. 为什么有这个框架? 因为作为前端一直想实现tdd开发,之前受到几种限制: 1.使用jq的年代

【week3】词频统计 单元测试

使用Eclipse 集成的Junit进行单元测试.单元测试的核心包括断言.注解. 测试代码如下: @BeforeClass // 针对所有测试,只执行一次,且必须为static void public static void setUpBeforeClass() throws Exception { System.out.println("in BeforeClass================"); } @AfterClass // 针对所有测试,只执行一次,且必须为static

jacoco + eclipse单元测试覆盖率

概念 Jacoco:JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等. 插桩:程序插桩,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为"探测仪",本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得