关于jacocojava的信息
本篇文章给大家谈谈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的信息别忘了在本站进行查找喔。