今天做项目遇到一个问题,明明做单元测试时覆盖率已经百分百了,然后传到Jenkin上,构建也成功了,但偏偏覆盖率就是为零,非常确定代码没有问题,所以唯一的问题就是出现在配置上了。
一开始的结果如下:
Jenkin上面的配置如下:
一开始以为是我要扫描的包原因,所以我就在这下面把全部文件的路径都加上去了,结果却没有显示覆盖率了,进去深处一开,也是为零。
后来才知道
加了这些路径的意思是 sonar都不要扫描这些包,因为他和我们做的单元测试没有关系,因此这个配置是要加和单元测试无关的文件路径,之前我把和测试无关的文件全部加上了,sonar以为都不要读取这些文件,所以覆盖率自然就没有显示了。
回归正传,既然知道了问题出现在哪里,就针对他修改。
我把和单元测试有关的文件路径删除之后,覆盖率虽然显示出来了,但还是为零。所以修改了一下配置文件,
修改成这样,但是有些人修改成这样的话,可能构建就会出现问题,但没关系,还有另外一种方法,就是在pom文件加下面这段代码:
<plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.8</version><executions><execution><goals><goal>prepare-agent</goal><goal>report</goal></goals></execution></executions></plugin>
具体是啥原因咋也不知道,都是百度解决的,咱也没搞清楚。
然后install一下,就会发现target目录下出现jacoco.exec这个jar包,出现这个之后,距离成功就是只剩下两步了:
1、重新提交代码到git上
2、去Jenkin上面重新构建
然后就会发现覆盖率出来了!!!
如下图:
以上,就是我遇到问题的解决方法了。