code

2014年10月6日 星期一

在Jenkins上完成測試與測試覆蓋度報告 - Cobertura Plugin

Jenkins 最常見的應用,就是單元測試與測試覆蓋度了。因為這兩件事合起來,如果交給人類去執行,繳回來的報告有很高的機會,裡面只有一句話『老子(娘)不幹了』

本篇相關外掛

目標情境

使用Maven + JUnit + Cobertura 完成自動化測試及測試覆蓋度


我們先看最終結果,要由Jenkins自動的產生以下這份報告,並以郵件方式發送



淺說Java+Maven怎麼寫測試

使用Eclipse產生Java Maven專案後,預設會就自動產生 src/main/java 與 src/test/java,很容易理解的,前者為主程式目錄,後者為測試程式目錄。範例中使用的是JUnit,所以我們在根目錄上可以找到 pom.xml ,增加JUnit的套件加入專案。


然後動手編寫程式及測試程式,測試程式除了放在測試目錄下,通常我們會在命名時,以Test做為名稱的結尾。JUnit4開始加入了Annotation的方式定義測試項目,只要在要測試的項目前加上@Test 就是一個簡易的測試項目了。

更淺的測試覆蓋度說明 Maven+Cobertura

測試覆蓋度其實是單元測試的副產品,產出必需依賴測試的過程。簡易理解,就是測試過程中,分析所有測試項目爬過的主程式,然後計算出爬過跟沒爬過的統計資料。測試項目的數量跟覆蓋度是兩個相輔相成的質量分析指標。而Cobertura便是協助完成覆蓋度計算的工具。

程式開發過程中我們不需要Cobertura,而且他非常傷執行效能,所以我們只要設定Cobertura在Jenkins中執行就好了。參考Cobertura Plugin中的建議方式設定Maven的 pom.xml 加入下以片段。
Source Copy : https://wiki.jenkins-ci.org/display/JENKINS/Cobertura+Plugin

其餘的,讓 Jenkins 來就好了


建立一個新的Free-Style專案,範例中的 SCM來源及 Maven Goal參考以下設定
  • Git: https://github.com/abola/co.gibar.example.git
  • Maven Goal: clean compile cobertura:cobertura
建立自動輪詢,讓Git有更新時,Jenkins自動啟動建置

每十分鐘輪詢一次,設定正確下方會出現下次預計啟動時間

設定建置後,產生Unit Test 的報告,Maven的UnitTest報告會放在 target/surefire-reports/*.xml
產出測試報告,會在專案頁面中顯示測試的圖表
設定建置後,產生Cobertura覆蓋度報告,而cobertura的結果會存放在coverage.xml中,至於存放的位置,Maven通常會放在 **/target/site/cobertura/coverage.xml 
產出覆蓋度報告,同樣會在專案頁面中顯示出圖表

最後,將結果整合發送至郵件中,如果你不知道怎麼設定,請參考 [ 使用 Jenkins 產生自動化郵件通知報表 - Email-ext Plugin ] ,照著該篇內容操作,我們這兒只要將『可編式電子郵件通知』的項目新增出來,設定皆用設定值即可。


OK! 文章之初的內容就是這樣子做出來的囉。不過別忘了,圖表都要有兩次以上的建置記錄,才有辦法繪製喔!而我們專案的頁面現在會長的像這樣。其中Coverage Report內的內容就是Cobertura產出非常詳細的覆蓋度報告。
項目越來越多囉



沒有留言:

張貼留言