Jacoco统计接口覆盖率

2023-10-17 14:20
文章标签 接口 统计 覆盖率 jacoco

本文主要是介绍Jacoco统计接口覆盖率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们通常通过接口自动化来进行上线前验证,保障当前迭代的改动不影响原有接口的正常运行,这就需要接口的覆盖率较高,才能起到重要的价值。通过jacoco进行覆盖率统计,可以清晰地统计出接口覆盖率情况,并且能够根据覆盖的代码情况进一步完善接口自动化。话不多说,接下来我们就来看下如何用jacoco进行接口覆盖率统计。

 

1、首先需要在需要统计的服务对应的机器上安装jacoco和ant

下载jacoco和ant压缩包:

ant直接解压,解压后,会自动生成一个ant的文件夹;

jacoco需要自己先新建一个文件夹,然后把压缩包放进去解压。

然后将ant加入环境变量:

vim ~/.bashrc

然后执行命令:

source ~/.bashrc

即时生效。

 

然后运行ant -v

表明安装成功。

 

2、在服务的tomcat启动项上增加如下配置:

-javaagent:/xxxx/jacoco/lib/jacocoagent.jar=includes=com.xxx.*,output=tcpserver,port=8125,address=127.0.0.1

其中,端口可随意指定,只要不跟其他端口冲突即可,如果是本机,ip须是127.0.0.1

然后重启服务,会自动监听本机的port端口

 

3、在服务器上增加build.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="JaCoCo" default="run" xmlns:jacoco="antlib:org.jacoco.ant"><!--Jacoco的安装路径--><property name="jacocoAntPath" value="/home/用户/xxx/tools/jacoco/lib/jacocoant.jar"/><!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的--><property name="jacocoExecPath" value="/home/用户/xxx/codeCoverage/study/jacocoExec"/><!--生成覆盖率报告的路径--><property name="jacocoReportPath" value="/home/用户/xxx/codeCoverage/study/report"/><!--远程tomcat服务的ip地址  xxx.xx.xxx.163(172.16.1.31)--><property name="server_ip" value="127.0.0.1"/><!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样--><property name="server_port" value="8125"/><!--源代码路径--><property name="srcPath" value="/home/用户/sourceSrc/xxx/src/main/java"/><!--service.class文件路径--><property name="classesPath" value="/home/用户/xxx/instance1/approot/testhf/BOOT-INF/classes"/><!--让ant知道去哪儿找Jacoco--><taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"><classpath path="${jacocoAntPath}"/></taskdef><target name="run"><echo message="start..."/><echo message="dump..."/><antcall target="dump"/><echo message="merge..."/><antcall target="merge"/><echo message="report..."/><antcall target="report"/><echo message="end..."/></target><!--dump任务:根据前面配置的ip地址,和端口号,访问目标tomcat服务,并生成.exec文件。--><target name="dump"><jacoco:dump address="${server_ip}" reset="true" destfile="${jacocoExecPath}/study_jacoco.exec" port="${server_port}" append="false"/></target><target name="merge"><jacoco:merge destfile="${jacocoExecPath}/merged.exec"><fileset dir="${jacocoExecPath}" includes="*.exec"/></jacoco:merge></target><!--jacoco任务:根据前面配置的源代码路径和.class文件路径,根据dump后,生成的.exec文件,生成最终的html覆盖率报告。--><target name="report"><jacoco:report><executiondata><file file="${jacocoExecPath}/merged.exec"/></executiondata><structure name="JaCoCo Report"><group name="xxxx coverage"><sourcefiles encoding="UTF-8"><fileset dir="${srcPath}"/></sourcefiles><classfiles><fileset dir="${classesPath}/com/netease/edu"/></classfiles></group></structure><html destdir="${jacocoReportPath}" encoding="utf-8"/><csv destfile="${jacocoReportPath}/report.csv"/><xml destfile="${jacocoReportPath}/report.xml"/></jacoco:report></target>
</project>

其中,上面的port必须和tomcat启动项中的端口保持一致。

然后执行ant -f build.xml即可生成报告。

 

4、持续集成

多个服务可能在多台服务器上,在同一个服务器上时,注意端口不要冲突,在多个服务器上,每次都去服务器上执行不方便,可在jenkins持续集成机器上编写脚本,通过remotessh的方式进入各个机器执行脚本并拷贝报告到job机器上,展示覆盖率结果。

此处拷贝report文件夹,需要将目标路径文件夹的权限为777才行,否则会拷贝失败~

5、覆盖率报告如下:

进入代码中可看到哪些语句被覆盖了,哪些还未被覆盖,然后作为依据补充接口自动化用例。

 

 

这篇关于Jacoco统计接口覆盖率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225976

相关文章

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac