一. 概述
測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)不能超過(guò)測(cè)試所能達(dá)到的程度。測(cè)試改進(jìn)了代碼質(zhì)量,但這也只是針對(duì)實(shí)際測(cè)試到的那部分代碼而言的。您需要有一個(gè)工具告訴您程序的哪些部分沒(méi)有測(cè)試到,這樣就可以針對(duì)這些部分編寫(xiě)測(cè)試代碼并找出更多 bug。
Mark Doliner 的 Cobertura (cobertura 在西班牙語(yǔ)是覆蓋的意思)是完成這項(xiàng)任務(wù)的一個(gè)免費(fèi) GPL 工具。Cobertura 通過(guò)用額外的語(yǔ)句記錄在執(zhí)行測(cè)試包時(shí),哪些行被測(cè)試到、哪些行沒(méi)有被測(cè)試到,通過(guò)這種方式來(lái)度量字節(jié)碼,以便對(duì)測(cè)試進(jìn)行監(jiān)視。然后它生成一個(gè) HTML 或者 XML 格式的報(bào)告,指出代碼中的哪些包、哪些類、哪些方法和哪些行沒(méi)有測(cè)試到??梢葬槍?duì)這些特定的區(qū)域編寫(xiě)更多的測(cè)試代碼,以發(fā)現(xiàn)所有隱藏的 bug。
下面簡(jiǎn)單介紹一下,如果使用Jenkins集成Cobertura顯示代碼測(cè)試覆蓋率報(bào)告
二. maven集成Cobertura
我的項(xiàng)目是用maven作為構(gòu)建工具,需要maven集成Cobertura,故要在pom.xml文件中增加cobertura-maven-plugin插件:
<plugins>
<!-- cobertura plugin start -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
<!-- cobertura plugin end -->
</plugins>
我的項(xiàng)目采用的是微服務(wù)架構(gòu),只需要在自己要出報(bào)告的模塊pom.xml中添加如上插件即可.
三. Jenkins安裝Cobertura插件

四. 配置Jenkins任務(wù)
- 修改maven執(zhí)行命令,添加Cobertura執(zhí)行命令
cobertura:cobertura
# 標(biāo)注、運(yùn)行測(cè)試并產(chǎn)生 Cobertura 覆蓋率報(bào)告

-
在Add post build action(構(gòu)建后操作)這個(gè)配置項(xiàng)中選擇如下Publish Cobertura Coverage Report:
-
選擇完后會(huì)顯示一個(gè)配置項(xiàng), 這里填上你最終cobertura生成xml report的路徑,我的路徑是
**/target/site/cobertura/coverage.xml
4. 重新build項(xiàng)目
就可以在項(xiàng)目首頁(yè)看到code coverage report:

第一次構(gòu)建,右側(cè)的代碼覆蓋率報(bào)告可能會(huì)顯示為空,沒(méi)有關(guān)系的,多構(gòu)建幾次就出來(lái)了.
點(diǎn)擊進(jìn)去,可以查看更為詳細(xì)的報(bào)告信息:

具體如何查看Cobertura輸出報(bào)告,可參考文章<用 Cobertura 測(cè)量測(cè)試覆蓋率>.

