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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 基于 jacoco 的功能测试代码覆盖率实践 1.1 目前主流代码覆盖率统计工具 考虑到方案实施的难度很大取...
    WellDo阅读 20,405评论 1 4
  • 教程:https://www.yiibai.com/jenkins/ 本节内容: Jenkins介绍 安装部署Je...
    达微阅读 9,032评论 2 77
  • Java Jacoco Ant Maven 针对 Jacoco[http://www.eclemma.org/ja...
    纳爱斯阅读 53,668评论 64 52
  • 我多想, 朱红的唇, 触摸你光洁的额头, 告诉你我浅而浓厚的感情。 我多想, 宽阔的臂膀, 拥抱你单薄的衣襟, 浮...
    看海的星星阅读 382评论 9 7
  • 只有深度才能看透本质 这样才不会被表象迷惑 只有明白本质运行规律 才能在迷宫中找到出口 看不清本质的人只能 永远活...
    峰鸟阅读 187评论 0 0