前提:已配置SonarQube环境
一、简介
Jacoco是一个开源的Java代码覆盖率工具,可以嵌入到maven、ant中。
能帮助测试人员直观的了解测试覆盖情况。
二、生成代码覆盖率数据
方法一:在pom.xml中配置
只需在pom.xml文件中加上Jacoco插件,以后每次执行mvn install即可生成代码覆盖率数据:
#pom.xml中配置插件
<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>
然后执行mvn clean install
;
在"/target"目录中生成jacoco.exec文件就代表覆盖率数据生成成功。
访问"/target/site/jacoco/index.html",即可查看代码覆盖率报告。
方法二:通过命令指定插件
若不想修改pom.xml文件,也可以通过maven的参数去指定使用Jacoco插件:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
效果与方法一一致。
三、将数据同步至SonarQube
以上步骤中生成的.exec
文件就包含了该项目的代码覆盖率数据。要想在SonarQube平台上展示代码覆盖率数据,就需要该.exec
文件。
上传的方式很简单,同样利用maven的sonar插件即可实现。
1. 在maven中配置SonarQube的信息
打开"maven安装目录/conf/settings.xml",在<profiles></profiles>标签中增加以下配置信息(安照实际情况填写url、账号等):
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>
jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.host.url>http://127.0.0.1:8090</sonar.host.url>
<sonar.login>admin</sonar.login>
<sonar.password>admin</sonar.password>
</properties>
</profile>
2. 在项目pom.xml中配置sonar插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.6</version>
</plugin>
3. 执行mvn sonar:sonar
即可。
该命令会先执行静态扫描,并将扫描的结果和代码覆盖率数据(即jacoco.exec
)一起上传至SonarQube平台。
==备注==:和jacoco插件一样,若不想修改pom,xml文件,可以用mvn org.codehaus.mojo:sonar-maven-plugin:2.4:sonar
命令代替2、3两步操作。
(需要注意的是,sonar插件的版本选择与SonarQube版本有关,若不兼容,会有相关的报错提示)
网友评论