1. 程式人生 > >maven+cobertura+ant跨模組單測覆蓋率統計

maven+cobertura+ant跨模組單測覆蓋率統計

cobertura是統計單測覆蓋率的工具,但是一般不會使用到ant一起統計。

--父pom.xml

----web

      --pom.xml

---service

      --pom.xml

maven+cobertura+ant使用場景:當應用是這樣設計的,web應用、service應用,controller介面在web應用中,service僅僅作為web的jar包依賴,單測卻寫在web下,springboot啟動類在web下。maven+cobertura使用統計覆蓋率卻始終未0,可明明有單測啊。

為了查明原因,特意百度了下cobertura的使用,得出結論:web和service生產的classes檔案在2個不同的target下,web下的類引用不到service的,web對service maven依賴也不行。

這就要用到ant了,ant的作用是比較靈活的,具體是什麼作用問度娘(為了節約時間,這裡就不那麼詳細說了),

如何使用ant解決?

參考http://blog.csdn.net/shymi1991/article/details/52849947

注意:

1.  build.xml中<propertyname="COBERTURA_HOME"value="/Users/tsu/java/cobertura-1.9.4.1"/>

COBERTURA_HOME 是指單獨下載的cobertura,而非maven依賴下的jar包。(所以這裡需要單獨下載cobertura

2. 使用intelij時會發生執行命令不成功,那麼就換到命令終端裡執行。

3. 一般的ide中都集成了ant外掛,如果沒整合則需要自己下載一個,http://org.apache.com/。(下載到本地,過程和下載maven類似)

4. 配置完需要重新編譯。

5. 若執行ant instrument時報錯,提示主類找不到(我用的是springboot,因此這裡的主類是指springboot啟動類),這時需要解決某些包的衝突問題,

比如我遇到的是cobertura的日誌配置和我當前應用的日誌配置是衝突的,那麼我在web的pom.xml中配置cobertura時新增<exclude>標籤將cobertura的日誌配置排除掉。

6.注意線上執行單測統計覆蓋率時,需要檢查線上環境是否支援ant和存在cobertura的配置。