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

前提:已配置SonarQube环境

一、简介

Jacoco是一个开源的Java代码覆盖率工具,可以嵌入到maven、ant中。
能帮助测试人员直观的了解测试覆盖情况。

二、生成代码覆盖率数据

方法一:在pom.xml中配置

只需在pom.xml文件中加上Jacoco插件,以后每次执行mvn install即可生成代码覆盖率数据:

#pom.xml中配置插件

    org.jacoco
    jacoco-maven-plugin
    0.7.8
    
        
            
                prepare-agent
                report
            
        
    

然后执行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",在标签中增加以下配置信息(安照实际情况填写url、账号等):


   sonar
   
       true
   
   
        
        jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
        
        com.mysql.jdbc.Driver
       http://127.0.0.1:8090
       admin
       admin
   

2. 在项目pom.xml中配置sonar插件

    org.codehaus.mojo
    sonar-maven-plugin
    2.6

3. 执行mvn sonar:sonar即可。

该命令会先执行静态扫描,并将扫描的结果和代码覆盖率数据(即jacoco.exec)一起上传至SonarQube平台。

==备注==:和jacoco插件一样,若不想修改pom,xml文件,可以用mvn org.codehaus.mojo:sonar-maven-plugin:2.4:sonar命令代替2、3两步操作。
(需要注意的是,sonar插件的版本选择与SonarQube版本有关,若不兼容,会有相关的报错提示)

你可能感兴趣的:(Java单元测试覆盖率分析,并同步至Sonar)