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