前提:已配置SonarQube環(huán)境
一、簡(jiǎn)介
Jacoco是一個(gè)開(kāi)源的Java代碼覆蓋率工具,可以嵌入到maven、ant中。
能幫助測(cè)試人員直觀的了解測(cè)試覆蓋情況。
二、生成代碼覆蓋率數(shù)據(jù)
方法一:在pom.xml中配置
只需在pom.xml文件中加上Jacoco插件,以后每次執(zhí)行mvn install即可生成代碼覆蓋率數(shù)據(jù):
#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>
然后執(zhí)行mvn clean install;
在"/target"目錄中生成jacoco.exec文件就代表覆蓋率數(shù)據(jù)生成成功。
訪問(wèn)"/target/site/jacoco/index.html",即可查看代碼覆蓋率報(bào)告。
方法二:通過(guò)命令指定插件
若不想修改pom.xml文件,也可以通過(guò)maven的參數(shù)去指定使用Jacoco插件:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
效果與方法一一致。
三、將數(shù)據(jù)同步至SonarQube
以上步驟中生成的.exec文件就包含了該項(xiàng)目的代碼覆蓋率數(shù)據(jù)。要想在SonarQube平臺(tái)上展示代碼覆蓋率數(shù)據(jù),就需要該.exec文件。
上傳的方式很簡(jiǎn)單,同樣利用maven的sonar插件即可實(shí)現(xiàn)。
1. 在maven中配置SonarQube的信息
打開(kāi)"maven安裝目錄/conf/settings.xml",在<profiles></profiles>標(biāo)簽中增加以下配置信息(安照實(shí)際情況填寫(xiě)url、賬號(hào)等):
<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. 在項(xiàng)目pom.xml中配置sonar插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.6</version>
</plugin>
3. 執(zhí)行mvn sonar:sonar即可。
該命令會(huì)先執(zhí)行靜態(tài)掃描,并將掃描的結(jié)果和代碼覆蓋率數(shù)據(jù)(即jacoco.exec)一起上傳至SonarQube平臺(tái)。
==備注==:和jacoco插件一樣,若不想修改pom,xml文件,可以用mvn org.codehaus.mojo:sonar-maven-plugin:2.4:sonar命令代替2、3兩步操作。
(需要注意的是,sonar插件的版本選擇與SonarQube版本有關(guān),若不兼容,會(huì)有相關(guān)的報(bào)錯(cuò)提示)