关于jacocojava的信息

博主:adminadmin 2023-01-10 23:45:09 747

本篇文章给大家谈谈jacocojava,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何生成使用jacoco集成测试converage报告

我们系统使用weblogic做服务器,集成测试框架使用的是junit+selenium。

首先,要把jacoco的jacocoagent.jar包放到部署应用的服务器上,接着在系统服务的JAVA_OPTIONS 后面添加如下参数:

1

-javaagent:[yourpath/]jacocoagent.jar=includes=com.xxx.xxx.*,output=tcpserver,address=xxx.xxx.xxx.xxx,port=xxxxx

参数解释:

前面的yourpath是放jacocoagent.jar文件的目录路径;

includes是指要收集哪些类(注意不要关写包名,最后要写.*),不写的话默认是*,会收集应用服务上所有的类,包括服务器和其他中间件的类,一般要过滤;

output有4个值,分别是file,tcpserver,tcpclient,mbean,默认是file。使用file的方式只有在停掉应用服务的时候才能产生覆盖率文件,而使用tcpserver的方式可以在不停止应用服务的情况下下载覆盖率文件,后面会介绍如何使用dump方法来得到覆盖率文件。

address是ip, port是端口,这是使用tcpserver方式需要的2个参数,也是后面dump方法要用到的。(这里的address我只能使用服务器的ip,如果使用其他ip,服务启动时会报错。)

更多参数可以参考java agent。

配置完应用服务的JAVA_OPTIONS之后,启动服务器,然后可以开始跑你的集成测试,跑完之后,实际上jacocoagent已经将覆盖率数据记录下来了,我们可以使用下面的ant任务来dump出覆盖率文件:

build.xml

1 2 3

  target name="downloadUatCoverageData" jacoco:dump address="xxx.xxx.xxx.xxx" port="xxxx" reset="true" destfile="${basedir}/uat.exec" append="false"/ /target

这里的address和port是刚才在JAVA_OPTIONS里面写的address和port的值,destfile是指生成的覆盖率文件路径。

注意,这里虽然得到了集成测试的覆盖率文件,但是需要应用服务器上的类文件才能产出相应的覆盖率报告,如果类文件是其他JVM编译的,产出的报告覆盖率是0%。

有2种方法可以得到覆盖率文件所需的class文件:

将应用服务部署的包(ear或war或jar)包下载下来之后解压,即可得到对应的class文件;

在前面做单元测试之后,可以将class文件打成一个zip包,然后上传到服务器,最后在需要的时候去服务器上取。

得到集成测试的覆盖率文件之后,结合之前取到的单元测试覆盖率文件,我们可以将2个文件合并,得到综合的覆盖率文件,命令如下:

build.xml

1 2 3 4 5

 target name="mergeCoverage" jacoco:merge destfile="merged.exec" fileset dir=

jacoco原理

Jacoco使用插桩的方式来记录覆盖率数据,是通过一个probe探针来注入。

插桩模式有两种:

1. on-the-fly模式

JVM通过 -javaagent参数指定jar文件启动代理程序,代理程序在ClassLoader装载一个class前判断是否修改class文件,并将探针插入class文件,探针不改变原有方法的行为,只是记录是否已经执行。

2. offline模式

在测试之前先对文件进行插桩,生成插过桩的class或jar包,测试插过桩的class和jar包,生成覆盖率信息到文件,最后统一处理,生成报告。

作者:做自己人生的主宰者

链接:

jacoco.exec文件是干什么

1.下载jacoco:

2.对于tomcat,在catalina.sh的JAVA_OPTS配置中增加:

-javaagent:/home/work/local/jacoco/lib/jacocoagent.jar=includes=com.xxx.*

其中 includes:表示针对指定的class进行覆盖率数据收集,其他参数: append=true/false:每一次收集的覆盖率数据是追加还是替换,不设置默认为true destfile=jacoco.exec:dump出来的覆盖率数据文件output=file/tcpserver/tcpclient:覆盖率数据输出的形式,分别为file,tcpserver和tcpclient,file是比较简单的方式,tcp的方式可支持自行开发获取覆盖率数据的工具。不设置默认是file。

3.注意采用output=file的方式下,是在jvm停掉时将覆盖率数据dump出来到文件,在shutdown tomcat后不能kill -9 Java,只杀掉tomcat进程,否则数据收集无效

4.生成覆盖率数据需要ant执行,build.xml实例如下:指定第3步dump出的exec文件之后,执行antjacoco,就会在指定路径输出html格式覆盖率报告

jacoco 计算 jmeter动态覆盖率演示

java -javaagent:org.jacoco.agent-0.8.5-runtime.jar -jar ApacheJMeter.jar

导出覆盖率HTML

java -jar org.jacoco.cli-0.8.5-nodeps.jar report jacoco.exec --classfiles "D:\apache-jmeter-5.2.1\bin\ApacheJMeter.jar" --html /jmeter/coverage

导出覆盖率CSV

java -jar org.jacoco.cli-0.8.5-nodeps.jar report jacoco.exec --classfiles "D:\apache-jmeter-5.2.1\lib\ext\ApacheJMeter_http.jar" --csv /jmeter/coveragee.csv

那么如何计算持续集成项目的动态覆盖率呢??

jacocojava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、jacocojava的信息别忘了在本站进行查找喔。