jacoco验证接口自动化代码覆盖率
jacoco下载
官方下载地址:https://central.sonatype.com/?smo=true
csdn下载地址:https://download.csdn.net/download/m0_43550804/88228839
jacoco工具主要包含:
jacocoagent.jar,jacocoant.jar,jacococli.jar
jacocoagent.jar是一个代理程序,用来搜集执行信息,在请求或者JVM退出的时候生成代码覆盖率数据
jacocoant.jar是在ant项目任务中加入jacoco,在启动Java程序,记录数据并能创建覆盖率报告,通过coverage, agent, dump和 merge。report等任务会创建不同格式的报告
jacococli.jar提供了一些命令行接口,生成exec文件、合并或生成html报告等
准备工作:
1、将jacoco下载并解压
2、被测项目工程打jar包,可找开发打jar包
3、下载项目工程包,因为在将覆盖率文件转换成html文件时需要用到,需要项目里这两个目录\target\classes(这个目录需要项目编译后才会生成)、\src\main\java。
开始执行
一、本地运行jar包(运行时jacoco自动插桩)
java -javaagent:D:\jacoco\test\jacoco-0.8.8\lib\jacocoagent.jar=includes=*,output=tcpserver,port=6301,address=localhost,append=false -jar D:\jacoco\test\services-edu-web.jar
参数解读:
–includes:类名,比如【com.*】代表包含com开头的类名
–classdumpdir:类文件存储的目录
–output:tcpserver方式,通过address和端口获取数据
–append:true是执行数据文件已经存在,则覆盖数据将附加到现有文件
–address:tcpserver的访问地址
注:-address设置tcpserver的访问地址。可以配置127.0.0.1,也可以配置为实际访问ip
配置为127.0.0.1的时候,dump数据只能在这台服务器上进行dump,就不能通过远程方式dump数据。
配置为实际的ip地址的时候,就可以在任意一台机器上(前提是ip要通,不通都白瞎),通过ant xml或者api方式dump数据。
二、生成dump
java -jar D:\jacoco\test\jacoco-0.8.8\lib\jacococli.jar dump --address localhost --port 6301 --destfile D:\jacoco\test\jacoco.exec --reset
执行后,将在目录下生成指令中指定的 exec 文件 jacoco.exec
注意!生成文件之前,先去执行接口自动化用例!
参数解读:
–reset: 生成覆盖率数据后,重置之前的统计,想要重新获取统计数据,需要删除之前生成的exec文件
–address: 运行jacocoagent.jar的主机IP
–port: 运行jacocoagent.jar的主机监控端口
三、将生成的文件转换成html
java -jar D:\jacoco\test\jacoco-0.8.8\lib\jacococli.jar report D:\jacoco\test\jacoco.exec --classfiles D:\jacoco\services-edu-web\target\classes --sourcefiles D:\jacoco\services-edu-web\src\main\java --html D:\jacoco\test\report --name 实训平台
在指定文件生成报告
参数解读:
–name:html中的名称
–classfiles: 编译文件存放目录,maven 项目是target下
–sourcefiles: 原文件存放目录,maven项目是 src\main\java
-sourcefiles可以不传,不传的话,覆盖率报告到文件级的展示,再细,需要具体代码和行数就需要传sourcefiles
生成报告后,点击进入index.html可查看
结尾
通过以上步骤,大家就可以完成对自身接口自动化覆盖率的度量。
以上方法只是纯手工操作,通过以上原理,使用shell脚本可通过Jenkins流水线执行。
使用Jenkins的方式后续补充,此处一方面用于个人备忘,另一方面希望给大家带来一些帮助,助于大家理解精准测试中-接口自动化覆盖率方案的原理。