记一下首次使用jacoco检测待测服务的代码覆盖率
1.先简单的写了一个springboot的服务
防止端口冲突,在配置文件里改了一下端口
2.打成可执行jar包
首先新增maven配置,在commandline中填写 clean package
然后执行build project
就可以在target目录看到我们打成的jar包
3.在服务器上执行jar包,启动服务
首先下载jacocoagent.jar,该步骤本文不做赘述,可自行百度,然后上传到服务器上,执行如下命令
java -javaagent:./jacocoagent.jar=dumponexit=true,destfile=/usr/mock/jacoco.exec -jar mocktest04-1.0-SNAPSHOT.jar
其中,./jacocoagent.jar为下载的jacocoagent.jar所在的路径,destfile=/usr/mock/jacoco.exec是为将要生成的结果文件指定路径mocktest01-1.0-SNAPSHOT.jar为要启动的服务jar包
4.开始测试
在完成上一个步骤后,如果不出意外服务正常启动后,可以访问对应的测试服务接口,从而调用服务
在这次的测试中服务器ip为192.168.4.135,端口我们设置的是9090,这样我们访问的接口地址就是192.168.4.135:9090/test1、192.168.4.135:9090/test1、192.168.4.135:9090/test1
我们测试一下,只访问test1和test3
5.停止服务
这里不可以用kill -9强制中断进程,了解到有很多其他方法,我这里就采用了最简单的kill -15来杀掉服务进程
其他高端一点设计或者手段,或者不停止服务的情况下动态获取覆盖率的方法,后面再研究
这样成功停止服务后,我们再上面的指定的路径下就可以看到生成的结果文件jacoco.exec
6.打开结果文件
对于jacoco.exec文件的处理有很多种,这里我们只用最简单直接的方法,就是用idea查看
首先选择Analyze下的Show Coverage Data
点击+,然后找到我们的结果文件
然后你就会看到Coverage视窗,可以看到类覆盖率,方法覆盖
可双击指定类来查看该类下的覆盖详情
可以看到在覆盖到的行前面被标绿,没被覆盖到的行前被标红,这样我们就知道哪些代码被覆盖到,哪些没被覆盖到