Jenkins 進階篇 – 單元測試覆蓋率
我們做項目開發,肯定免不了要寫單元測試,不管是 Java 項目、Python 項目、PHP 項目,甚至是 nodejs 項目,都應該要寫單元測試,本小節就來介紹單元測試的覆蓋率報告輸出和展示,在後面的章節中我會介紹代碼質量網關 Sonarqube 的使用。
我們的項目在構建時就可以運行單元測試並輸出覆蓋率的測試報告,Jenkins 也早就考慮到這些事項,我這裡以 Java 項目為例子,為了便於直觀地展示單元測試覆蓋率報告我們要安裝一個 Jenkins 插件 JaCoCo。不會安裝 Jenkins 插件的同學可以參考我之前的文章。插件安裝好後需要對構建任務做些配置,我這裡還是以 demo-todo-list 這個任務為例。
在任務的【配置】中的【構建後操作】裏面增加一個 【Record JaCoCo coverage report】步驟,一般情況下默認即可,如果你的項目有做特殊設置,例如單元測試覆蓋率報告的目錄自己有特殊設置過,那就要根據實際情況調整,匹配到正確的 jacoco 報告文件的目錄位置。這裡還可以做些關卡設置,例如,如果我們的單元測試覆蓋率沒有達到多少就讓這個任務失敗,這樣可以以此作為規定,在公司內部達成共識,定一個合適的覆蓋率指標,以後開發人員都必須遵守規定不能不寫單元測試。
我這裡的默認設置如下:
設置好後,我們再來構建一下該任務,就會發現左側菜單欄多了一個【Coverage Trend】選項,並且右邊還有一個【Code Coverage Trend】折線圖,折線圖會反映出單元測試覆蓋率的變化情況。這兩個地方都可以點擊進去查看單元測試覆蓋率的詳細情況。
我這裡的單元測試覆蓋率如下圖:
每一個 Java 的包名還可以點擊進去查看某個類的具體覆蓋率情況:
以上就是 Jenkins 輸出單元測試報告的方式,如果你在使用過程中遇到什麼問題歡迎留言討論。