天天看點

Jenkins內建Maven代碼覆寫率插件Cobertura

Jenkins內建Maven代碼覆寫率插件Cobertura可以很好的測試到沒有做單元測試的代碼,代碼測試覆寫率也是一個衡量代碼品質的因素。Maven為我們提供了Cobertura插件,可以很好地配置到pom.xml檔案中內建。除了Cobertura,還有一款商業測量代碼覆寫率插件Clover。

pom.xml依賴配置

[html] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. <build>
2. <plugins>
3. .....
4. <!-- code cover rage -->
5. <plugin>
6. <groupId>org.codehaus.mojo</groupId>
7. <artifactId>cobertura-maven-plugin</artifactId>
8. <version>2.6</version>
9. <configuration>
10. <formats>
11. <format>html</format>
12. <format>xml</format>
13. </formats>
14. </configuration>
15. </plugin>
16. </plugins>
17. </build>      

Jenkins Cobertura插件安裝

Jenkins內建Maven代碼覆寫率插件Cobertura

注意:安裝後重新開機Jenkins生效。

Jenkins建構配置Cobertura

使用指令:mvn cobertura:cobertura 後面加了-Pmetrics表示生成報告。

Jenkins內建Maven代碼覆寫率插件Cobertura

注意:如果包含子產品功能,指令使用:mvn site   請參考​​http://www.mkyong.com/qa/maven-cobertura-code-coverage-example/​​

Jenkins建構後 Cobertura代碼測試覆寫率報告配置

這裡按照提示配置就可以了:

Jenkins內建Maven代碼覆寫率插件Cobertura

測試代碼覆寫率報告檢視

到任務主界面檢視:

Jenkins內建Maven代碼覆寫率插件Cobertura

點選左側Coverage Report檢視:

Jenkins內建Maven代碼覆寫率插件Cobertura

商業的代碼覆寫率插件Clover

官方位址:​​https://www.atlassian.com/software/clover​​

下載下傳位址:​​https://www.atlassian.com/software/clover/download​​

Jenkins Clover插件Github位址:​​https://github.com/atlassian/clover-jenkins-plugin​​

注:使用方法類似與Cobertura。

POM中配置(使用此版本的插件,不需要licence,但是隻能運作在linux下的機器上):

[java] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. <build>
2. <plugins>
3. <plugin>
4. <groupId>com.atlassian.maven.plugins</groupId>
5. <artifactId>maven-clover2-plugin</artifactId>
6. 1.0.0.nl-SNAPSHOT</version>
7. <configuration>
8. catch,static</contextFilters>
9. <includes>
10. <include>*.java</include>
11. </includes>
12. false</includesTestSourceRoots>
13. true</generateHistorical>
14. <encoding>GBK</encoding>
15. </configuration>
16. </plugin>
17. </plugins>
18. </build>      

問題:如果按照以上操作沒有正确生成覆寫率檔案,初步判斷是 jar包中的lisence沒有生效。window 系統下,當官網上注冊生成自己的證書,不過隻能用30天,主POM中配置:

[java] 

​​view plain​​​

 ​​​copy​​

1. <plugin>
2. <groupId>com.atlassian.maven.plugins</groupId>
3. <artifactId>maven-clover2-plugin</artifactId>
4. 2.5.1</version>
5. <configuration>
6. false</includesTestSourceRoots>
7. true</generateHistorical>
8. <encoding>GBK</encoding>
9. <licenseLocation>D:/clover.license</licenseLocation>
10. </configuration>
11. </plugin>      

帶有單元測試集的子POM配置:(跳過開發的單元測試集,我們自己的qatest就不需要添加這些代碼了)

[java] 

​​view plain​​​

 ​​​copy​​

1. <plugin>
2. <groupId>org.apache.maven.plugins</groupId>
3. <artifactId>maven-surefire-plugin</artifactId>
4. 2.4.2</version>
5. <configuration>
6. true</skipTests>
7. </configuration>
8. </plugin>      

建構指令:

  1. clover2:setup test clover2:aggregate clover2:clover -Dmaven.test.failure.ignore