jacoco agent tcpserver使用方案
作者:互联网
公司突然要求自动化测试对代码的覆盖率,故研究了一波jacoco相关
现状
- 要拉取的是接口自动化测试的覆盖率,非单元测试的,所以本身必须是在服务部署通过的情况下进行覆盖率的收集
- 我们这使用的是容器,java springboot的框架
agent官网去学习了一波
调研了一波
- ant和maven的方法都是在编译过程中单元测试时出分辨率
- jacoco 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没看到外面有人使用 故先忽略)
- 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
- 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种方案,其他我
- ant转报告
- 开发工具直接展示
- 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