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版本有关,若不兼容,会有相关的报错提示)




posted @ 2021-03-27 22:56  路要一步一步走  阅读(1476)  评论(0编辑  收藏  举报