代码覆盖率系列(一):jacoco使用


jacoco工具主要包含:
jacocoagent.jar,jacocoant.jar,jacococli.jar

jacocoagent.jar是一个代理程序,用来搜集执行信息,在请求或者JVM退出的时候生成代码覆盖率数据

jacocoant.jar是在ant项目任务中加入jacoco,在启动Java程序,记录数据并能创建覆盖率报告,通过coverage, agent, dump和 merge。report等任务会创建不同格式的报告

jacococli.jar提供了一些命令行接口,生成exec文件、合并或生成html报告等

jacoco使用的方法有三种:
1:ant任务方式不常用,且需要配置环境,所以未考虑这种方法。
2:maven插件
  这种方式主要是在maven 生命周期中统计代码覆盖率,主要用于单元测试。
3:jacoco agent
这种方式可以在程序运行时,进行统计代码覆盖率。接口测试、自动化测试等都可使用。目前我的需求是统计某个服务的代码覆盖率,测试是通过接口测试完成,服务与测试代码是分离的,所以主要使用这种方式。

我们主要讲第三种方式:
第一步:下载jacoco,包含jacocoagent.jar和jacococli.jar

第二步:在java程序启动的时候,带上参数,例如:
java -javaagent:jacocoagent.jar=includes=com.*,classdumpdir=classes,output=tcpserver,port=6300,address=localhost,append=true -jar SpringBootBase.jar
解释:
includes:包含com开头的类名
classdumpdir:类文件存储的目录
output:tcpserver方式,通过address和端口获取数据
append:true是执行数据文件已经存在,则覆盖数据将附加到现有文件


我的java应用程序是:SpringBootBase.jar
jacocoagent 命令参数参考:https://www.jacoco.org/jacoco/trunk/doc/agent.html

第三步:生成exec文件,命令如下:
java -jar jacococli.jar dump --address localhost --port 6300 --destfile /app/SpringBootBase/bin/jacoco/jacoco.exec
destfile是指生成exec文件保存的目录

第四步:生成HTML报告,命令如下:
java -jar jacococli.jar report /app/SpringBootBase/bin/jacoco/jacoco.exec --classfiles /var/lib/jenkins/workspace/SpringBootBase/target/classes --sourcefiles /var/lib/jenkins/workspace/SpringBootBase/src/main/java --html /app/SpringBootBase/bin/jacoco/report_html
classfiles 编译文件存放目录,maven 项目是target下
sourcefiles 原文件存放目录,maven项目是 src\main\java
sourcefiles 可以不传,不传的话 覆盖率报告到文件级的展示,再细,需要具体代码和行数就需要传sourcefiles
生成报告后,点击进入index.html可查看
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jacoco(Java Code Coverage)是一个用于衡量代码覆盖率的工具。它可以帮助开发人员分析代码的测试覆盖情况,从而提供关于测试质量和代码可靠性的指标。 要使用Jacoco来计算代码覆盖率,你需要在项目中集成Jacoco插件并进行配置。具体步骤如下: 1. 在项目的构建文件(如pom.xml或build.gradle)中添加Jacoco插件的依赖。 对于Maven项目,添加以下代码到pom.xml文件中: ```xml <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.7</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 对于Gradle项目,添加以下代码到build.gradle文件中: ```groovy plugins { id 'jacoco' } jacoco { toolVersion = "0.8.7" } test { jacoco { append = false destinationFile = file("$buildDir/jacoco/test.exec") } } ``` 2. 运行项目的测试套件,生成Jacoco的覆盖率数据。 使用命令行或者IDE工具运行项目的测试套件,Jacoco会在测试过程中收集代码覆盖率数据。默认情况下,Jacoco会将数据保存在项目的`target`目录下(Maven项目)或者`build`目录下(Gradle项目)。 3. 生成代码覆盖率报告。 运行以下命令来生成代码覆盖率报告: ```shell mvn jacoco:report ``` 或者 ```shell gradle jacocoTestReport ``` 生成的报告会显示代码的覆盖率情况,包括行覆盖率、分支覆盖率、类覆盖率等指标。你可以在报告中查看哪些代码被测试覆盖,哪些代码没有被覆盖到。 希望这能帮助到你!如果有更多关于Jacoco或其他开发工具的问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值