首页 > 其他分享 >记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示.

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示.

时间:2022-11-30 19:38:55浏览次数:39  
标签:plugin sonarqube exec 单元测试 maven org jacoco


用了整整三天.QAQ.靠体力一下下试出来的结果.踩了个坑.

一开始,项目的覆盖率显示的是0,单元测试数也没有显示.

首先,想到的是test中的项目包结构目录的问题.

倒不是一定是全的,需要的包的路径结构要完整.

于是调整了test中的包结构,把测试class的命名改为了(原java)Test

项目用的是testng.不知道为啥,junit的我没运行出来单元测试数.

在工程目录,右击选择run with coverage.testng的.(可以为这个容器edit configurations->configuration的package选择要测的那个单元测试包->apply and ok).

修改了错误,使单元测试均可运行.

在右侧有coverage栏,可以看到覆盖率.eg.30%.

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._apache

这是一个完整项目的pom.xml文件.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.test.testcoverage</groupId>
<artifactId>testcoverage</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>


生成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.在浏览器上打开.可以看到

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._java_02

举个栗子,

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._单元测试_03

有红的,有绿的.

按道理推到sonar就可以看到结果了.mvn sonar:sonar -Dsonar.host.url=888888888888 -Dsonar.login=8888888888888

结果,应该是sonarqube中覆盖率为0,单元测试数为423423(举个栗子)

显然没解决.但是好了这么一点.

然后又做了颇多的努力.重点应该就是target下要能看到jacoco.exec

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._java_04

其中一个,不知道是不是靠这个解决的.就是修改的pom文件中的那个plugin.加了个输出位置.includes里面是让jacoco扫描的包路径,这个可以不加,因人而异,自己来吧.

<configuration >
<destFile>${project.build.directory}/jacoco.exec</destFile>
<dataFile>${project.build.directory}/jacoco.exec</dataFile>
<includes>
<include>**/service/impl/**</include>
</includes>
</configuration>

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._apache_05

还有一点忘记说了,target下要有jacoco.exec,如果你的在coverage-reports下,自己弄弄pom,或者将jacoco.exec复制到target下.或者名字不对的话,如jacoco-sshjdhksjhf.exec,把名字啥的重命名一下 .

然后重新mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install.............

应该就能解决了.

附一张成果图:

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._java_06

标签:plugin,sonarqube,exec,单元测试,maven,org,jacoco
From: https://blog.51cto.com/u_12528551/5900308

相关文章