https://blog.csdn.net/qq_33589510/article/details/104915621
java - javaagent:jacocoagent.jar [=options]应用
ant dump
ant report
includes:包含在执行分析中的类名列表,*表示全部
output:表示使用tcpserver代理侦听由address和port属性指定的TCP端口,并将执行的数据写入此TCP连接,从而实现不停止项目运行实时生成代码覆盖率报告
port:开启的端口号
address: 开启的ip地址,本地写127.0.0.1
jar:运行服务的jar包地址
java - javaagent:jacocoagent.jar [=options]应用
什么方法级别覆盖率你都还不满足,想看到底哪行代码覆盖到了?
那你得知道这有多坑了,最基本的配置是做不到的,我们还需要配置自己的 class 文件路径和源码路径!
注意要具体到 class 目录和 java 目录!,即 com 目录的上一级目录,就能完美展示源码的覆盖率情况了
Jacoco 官方的 Api 示例
地址: https://www.jacoco.org/jacoco/trunk/doc/api.html
可以屏蔽不同方式的构建部署,如果你想把这个功能做成平台,那 api 想必是很好的一种方式。
也就是说,我只需要把 jacoco 插桩到测试服务器上,暴露 tcp 的 ip 和端口,剩余的提取代码执行数据、生成覆盖率报告,就可以用统一的方式进行就好了。
众所周知,jacoco 官方提供了 Maven 插件方式、Ant 的 xml 方式,均有对应的 dump 和 report 来进行覆盖率数据的 dump 和报告生成,如果有兴趣可以研究一下,我也不过于啰嗦。
只需要改动 catalina.sh 中的启动参数即可。
前面提到过,主要改动主要是改动 java -jar,tomcat 是通过一个 JAVA_OPTS 参数来控制额外的 java 启动参数的,我们只需要在合适的地方把上面的启动命令追加到 JAVA_OPTS 即可
打开 catalina.sh,找到合适的地方修改 JAVA_OPTS 参数:
理论上,任何地方修改 JAVA_OPTS 参数均可,但我们实验过后,在以下位置加入,是一定可以启动成功的,当然您也可以尝试其他位置.
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
源脚本中有这个注释掉的地方,我们在下方修改 JAVA_OPTS:
在其下方,加一句:
JAVA_OPTS="$JAVA_OPTS -javaagent:$jacocoJarPath=includes=*,output=tcpserver,port=2014,address=192.168.110.1"
检验是否启动成功:
ps -ef|grep jacoco
netstat -anp |grep ‘address‘
mvn clean install
export MAVEN_OPTS="-javaagent:$jacocoJarPath=includes=*,output=tcpserver,port=2014,address=192.168.110.1"
mvn tomcat7:run -Dport=xxx
export MAVEN_OPTS=""
mvn clean install
export MAVEN_OPTS="-javaagent:$jacocoJarPath=includes=*,output=tcpserver,port=2014,address=192.168.110.1"
mvn spring-boot:run -Dport=xxx
export MAVEN_OPTS=""
就本质上来说,覆盖率报告的生成,只需要两个必须的东西,一个是 class 文件,一个是针对这些 class 产生的执行信息 (就是 exec 文件)。
当然了源码起到很重要的作用就是可以让你在报告里面来回跳转查看代码详情,如果没有源码,则没办法点进去方法。
综上来说,那也可以说成一个完善的覆盖率报告,可以有源码、class 文件、和对应的 exec 文件即可。
最最最最底层的原因。 部署时的 class 文件和生成报告的时候,用的 class 文件不一致。有以下几种情况:
原文:https://www.cnblogs.com/skystarry/p/15168619.html