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

相关文章

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead

hdu3333区间统计

题目大意:求一个区间内不重复数字的和,例如1 1 1 3,区间[1,4]的和为4。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents: