Java单元测试覆盖率分析,并同步至Sonar


链接:https://www.jianshu.com/p/4eb9415f0a5d

前提:已配置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&amp;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版本有关,若不兼容,会有相关的报错提示)





免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM