鏈接: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&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版本有關,若不兼容,會有相關的報錯提示)