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的配置。