其他分享
首页 > 其他分享> > jacoco agent tcpserver使用方案

jacoco agent tcpserver使用方案

作者:互联网

公司突然要求自动化测试对代码的覆盖率,故研究了一波jacoco相关

现状

  1. 要拉取的是接口自动化测试的覆盖率,非单元测试的,所以本身必须是在服务部署通过的情况下进行覆盖率的收集
  2. 我们这使用的是容器,java springboot的框架

 

agent官网去学习了一波

调研了一波

https://www.jacoco.org/jacoco/trunk/doc/

本次主要会用到2个功能 agent和cli

https://www.jacoco.org/jacoco/trunk/doc/agent.html

https://www.jacoco.org/jacoco/trunk/doc/cli.html

 

其实实际使用并不难,主要是在springboot的启动命令里面加入javaagent的参数配置,官方提供了2种方案(tcpclient没看到外面有人使用 故先忽略)

  1. output=file
    • 在每次服务结束时统一收集覆盖率dump
    • java -javaagent:/tmp/jacoco/lib/jacocoagent.jar=includes=*,output=file,append=true,destfile=/tmp/jacoco/service/demo/jacoco.exec -jar demo-0.0.1-SNAPSHOT.jar 
  2. output=tcpserver
    • 开放一个tcp端口,可以在过程中收集覆盖率dump
    • java -javaagent:/tmp/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar demo-0.0.1-SNAPSHOT.jar 
    • 需要通过jacococli.jar 来获取dump
    • java -jar jacococli.jar dump --address localhost --port 6300 --destfile ./jacoco-demo.exec

获取出来的就是exec的dump文件,那么接下来就要生成报告了

官方又提供了2种方案,其他我

  1. ant转报告
  2. 开发工具直接展示
  3. jacococli.jar 转报告

ant本身需要安装环境,还要定制build.xml,个人比较懒,而且平时使用ant的机会也不多,所以没用这个方案

开发工具直接看结果可以(idea Analyze->Show Coverage Data->选择exec文件),但后续不利于做二次开发

jacococli.jar 本身有report方法是专门用来转报告的  

java -jar jacococli.jar report ./jacoco-demo.exec --classfiles /Users/oukotoshuu/IdeaProjects/demo/target/classes/com  --sourcefiles /Users/oukotoshuu/IdeaProjects/demo/src/main/java --html report --xml report.xml

经个人尝试:

  --classfiles 必须项,是编译后target 文件夹下的classes里面的com

 

 

 

  --sourcefiles 理论可以不传,不传的话 只能到文件级的展示,再细 需要具体代码和行数就需要这个了

 

 

 

        --csv  这个维度只能到代码文件级 pass

 

 

 

        --xml  这个就比较细致了适合目前的需求

 

 

接下来目标就是再实际过程中实施了,到时候看下坑有多大吧,后面根据这个为基础搞实时的代码覆盖率,长路漫漫 学习不止~

 

标签:java,dump,demo,jar,tcpserver,agent,jacoco
来源: https://www.cnblogs.com/edwar172038/p/11491267.html