2011-06-16 13 views
3

想象一下,一個多模塊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

+0

[Hudson中的Java代碼覆蓋]的可能重複(http://stackoverflow.com/questions/1423405/java-code-coverage-in-hudson) – 2011-09-24 17:27:43

回答

1

使用jacoco和聲納,併爲所有模塊都有一個jacoco.exec文件結果。 Sonar將使用此文件並報告每個模塊的正確覆蓋範圍。 我已成功使用Sonar的多模塊項目

+1

任何有關確切使用Maven語法來實現此目的的線索,請? – Stewart 2012-10-23 09:54:37

相關問題