想象一下,一個多模塊Maven項目,如下列之一:如何獲得一個Maven多模塊的完整代碼覆蓋工程
parent
+- core
+- main
main
是依賴於core
模塊。
我現在用method1()
和method2()
在core
中寫了一個類CoreClass
。 在core
測試中,我編寫了一個測試課程,僅測試CoreClass.method1()
。
如果我運行一個覆蓋工具(在我的情況的Cobertura,使用mvn sonar:sonar
),我會發現我得到的測試覆蓋率的50%上CoreClass
(如果我們想像這兩種方法具有相同的長度)。
到目前爲止,一切都很好。
現在,在main
項目中,我編寫了一個測試類,測試CoreClass.method2()
。所以正常,我會預計有100%線覆蓋CoreClass
當我運行整個項目的分析。
但是,我仍然得到我的50%。
我知道這是一個全面的行爲。事實上,Cobertura將僅在core
模塊而不是main
上執行測試期間將儀器CoreClass
用於覆蓋分析。這解釋了爲什麼我仍然有代碼覆蓋率的50%。
但是,我的問題是知道當我在所有模塊上運行測試時,是否有辦法獲得實際代碼覆蓋率CoreClass
。
謝謝!
ps:我知道在一個完美的世界裏,main
模塊測試core
類並不值得關注。但正如你可能知道,我們不是在一個完美的世界:O)
技術信息:的Java 1.6,JUnit的4.8.1,2.0.9的Maven(即將升級到2.2.1,但我不不認爲它確實很重要),聲納2.8
[Hudson中的Java代碼覆蓋]的可能重複(http://stackoverflow.com/questions/1423405/java-code-coverage-in-hudson) – 2011-09-24 17:27:43