用了整整三天.QAQ.靠体力一下下试出来的结果.踩了个坑.
一开始,项目的覆盖率显示的是0,单元测试数也没有显示.
首先,想到的是test中的项目包结构目录的问题.
倒不是一定是全的,需要的包的路径结构要完整.
于是调整了test中的包结构,把测试class的命名改为了(原java)Test
项目用的是testng.不知道为啥,junit的我没运行出来单元测试数.
在工程目录,右击选择run with coverage.testng的.(可以为这个容器edit configurations->configuration的package选择要测的那个单元测试包->apply and ok).
修改了错误,使单元测试均可运行.
在右侧有coverage栏,可以看到覆盖率.eg.30%.
这是一个完整项目的pom.xml文件.
4.0.0
com.test.testcoverage
testcoverage
1.0-SNAPSHOT
UTF-8
org.testng
testng
6.11
test
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
org.jacoco
jacoco-maven-plugin
0.7.9
prepare-agent
report
prepare-package
report
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.7
demo见:(另附链接)https://download.csdn.net/download/level_Tiller/13072686
生成target中的jacoco统计报告,ignore=true,可以看到单元测试中不通的error
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
若是这步没问题,或者没别的啥问题,那么在target->site->jacoco中可以看到index.html.在浏览器上打开.可以看到
有红的,有绿的.
按道理推到sonar就可以看到结果了.mvn sonar:sonar -Dsonar.host.url=888888888888 -Dsonar.login=8888888888888
结果,应该是sonarqube中覆盖率为0,单元测试数为423423(举个栗子)
显然没解决.但是好了这么一点.
然后又做了颇多的努力.重点应该就是target下要能看到jacoco.exec
其中一个,不知道是不是靠这个解决的.就是修改的pom文件中的那个plugin.加了个输出位置.includes里面是让jacoco扫描的包路径,这个可以不加,因人而异,自己来吧.
${project.build.directory}/jacoco.exec
${project.build.directory}/jacoco.exec
**/service/impl/**
还有一点忘记说了,target下要有jacoco.exec,如果你的在coverage-reports下,自己弄弄pom,或者将jacoco.exec复制到target下.或者名字不对的话,如jacoco-sshjdhksjhf.exec,把名字啥的重命名一下 .
然后重新mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install.............
应该就能解决了.
附一张成果图: