Jacoco覆盖率过滤文件的实现

Jacoco覆盖率的实现pom.xml版本和Java -jar版本的设置

JaCoCo简述

JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。
很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins等。
JaCoCo包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes)

一、静态实现

maven项目中的pom.xml设置

<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.10</version>
            <configuration>
                <propertyName>jacoco.agent.argline</propertyName>
            </configuration>
             <executions>
          <execution>
            <id>pre-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>post-test</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
        </plugin>
    </plugins>
</build>

执行mvn clean test 命令会在target目录下生成jacoco目录里面有csv,html,xml聚合报告,也会在target目录下生成jacoco.exec的二进制文件

  • 一些其他的配置,如有需求,可以替换上方的节点
<configuration>
    <propertyName>jacoco.agent.argline</propertyName>
    <!--定义输出的文件夹-->
    <outputDirectory>target/jacoco-report</outputDirectory>
    <!--执行数据的文件-->
    <dataFile>${project.build.directory}/jacoco.exec</dataFile>
    <!--要从报告中排除的类文件列表,支持通配符(*?)。如果未指定则不会排除任何内容-->
    <excludes>
        <!--排除example中所有的文件和文件夹-->
        <exclude>**/example/**</exclude>
     </excludes>
      <!--包含生成报告的文件列表,支持通配符(*和?)。如果未指定则包含所有内容-->
     <includes></includes>
     <!--HTML 报告页面中使用的页脚文本。-->
     <footer></footer>
     <!--生成报告的文件类型,HTML(默认)、XML、CSV,添加此配置只会生成一种报告格式-->
     <formats>HTML</formats>
     <!--生成报告的编码格式,默认UTF-8-->
     <outputEncoding>UTF-8</outputEncoding>
     <!--源文件编码-->
     <sourceEncoding>UTF-8</sourceEncoding>
     <!--HTML报告的标题-->
     <title>${project.name}</title>
<configuration>        
  • tartget目录如下:targer目录
  • exec文件可以通过idea打开查看具体的覆盖情况,还可以通过第三方工具如:sonarqube
    在这里插入图片描述
    在这里插入图片描述
  • 浏览器打开html会看到类似下方的内容

在这里插入图片描述

二、动态实现

  • 下载依赖包
    Jacoco官网下载对应版本的zip包 https://www.jacoco.org/jacoco/
    拿到jacocoagent.jarjacococli.jar
    在这里插入图片描述
    找到自己的项目打包成jar包[you project].jar
    [you project]-替换成自己的项目jar包
  • 添加jacoco探针启动[you project].jar

java -javaagent:D:\jacoco\jacocoagent.jar
这里换成自己存放jacocoagent.jar的实际路径

完整的启动命令如下:(可以使用cmd命令,调起黑窗口,执行下方命令)

java -javaagent:D:\jacoco\jacoco-0.8.8\lib\jacocoagent.jar -jar [you project].jar

jacocoagent.jar的更多运行参数参考
https://www.jacoco.org/jacoco/trunk/doc/agent.html

  • 使用postman或者其他测试工具,访问你项目中的功能
  • 例如查询用户信息:localhost:8080/qryUser
  • 测试结束后停止jar包的运行,直接关闭黑窗口即可
  • 关闭之后你会发现在运行Java -jar的文件目录下生成jacoco.exec的文件
    在这里插入图片描述
    在这里插入图片描述
  • 生成html聚合报告

利用jacococli.jar 生成报告
参数信息 :
【report jacoco.exec 】如果jacoco.exec不在当前目录,用绝对路径指过去
【–classfiles D:\ZE\mycode\five\youjan_demo\target\classes\】 项目编译后的classes目录
注:也可以是项目依赖jar的绝对路径,可以测出此项目依赖jar包的覆盖率
【–sourcefiles D:\ZE\mycode\five\youjan_demo\src\main\java\】 项目源码路径
注:–sourcefiles 配置项非必穿,效果主要是当在访问生成html时能看到具体的哪些代码块没有覆盖到,如果不设置只能看到没有达到覆盖率的文件名,看不到该文件的具体内容
【 --html D:\ZE\mycode\five\youjan_demo\target\report】说明要生成html和存放html的位置

命令如下:

java -jar D:\jacoco\jacococli.jar report jacoco.exec --classfiles D:\ZE\mycode\five\youjan_demo\target\classes\ --sourcefiles D:\ZE\mycode\five\youjan_demo\src\main\java\ --html D:\ZE\mycode\five\youjan_demo\target\report

jacococli.jar的更多运行参数参考
https://www.jacoco.org/jacoco/trunk/doc/cli.html

  • 浏览器打开html会看到类似下方的内容

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值