2010-01-07 35 views
2

My Maven 2項目由幾個子模塊組成。它的結構包含EJB,WAR和Jar子模塊。現在我想要測試包含所有子模塊的打包EAR,如上所述。如何使用Cobertura測試Maven 2多項目?

實施例:

Interface Maven Project consists of several modules: 
- InterfacePOM --> parent pom 
- InterfaceEAR --> EAR module which does not actual code but is the packaging for Domain, EJB and WAR 
- InterfaceEJB --> EJB module 
- interfaceWAR --> WAR module 
- interfaceDomain --> JAR module 

當使用的Cobertura我可以成功地儀器上的所有各種獨立的模塊,但是生成每個模塊一個.ser文件。有沒有辦法一次測試一個enarre EAR文件?所以,結果將是一個單一的.ser文件,我可以使用?

回答

3

我現在基於Maven 2之前的答案實現了一個解決方案。它仍然不是很容易使用,但到目前爲止它還行。實現如下:

修改了我的父POM給人一種特定profile.This產生.ser文件和儀器類時生成的Cobertura儀器類。

2.通過使用maven-resource-plugin將檢測到的類複製到/ target/classes文件夾,因此實際打包使用檢測類。

3.由於沒有模塊寬.ser文件I手動從使用由給定的Cobertura命令行溶液中的EJB,WAR,JAR和耳文件合併那些.ser文件。 coberture-merge.bat/.sh

4..ser文件部署到我的JBoss容器中,並部署儀表化的EAR。

5.測試後,我對合並後的.ser文件運行報告,瞧..它似乎工作..

我肯定會考慮三葉草作爲實施該解決方案是有點手動..

3

簡短回答:(看看this previous answer瞭解更多詳情)。您需要一個外部插件,例如 dashboard (實際上,不要使用它,請參閱我以前的答案),XRadarSonar來彙總報告。但是在這個領域,Sonar是一個明顯的贏家(這個項目只是搖滾),我會毫不猶豫地推薦它。查看他們的公開實例Nemo,拿起任何項目並查看代碼覆蓋範圍的深入分析(例如Apache CXF),以瞭解它的功能。

更新:看來我錯過了最初的問題點,因此我正在更新我的答案。基本上,我現在將這個問題理解爲「如何用cobertura來整理耳朵」,這確實是一個完全不同的故事。

不幸的是,雖然cobertura可以測試一個耳朵,薩拉,拉鍊,戰爭,罐子,我不認爲cobertura-maven-plugin支持這個開箱即用,它可能是一個更好的選擇cobertura的螞蟻任務與antrun插件。請參閱MCOBERTURA-86,這thread和這discussion更多背景(和antrun示例)。

TBH,你要做的事情在構建生命週期,打包,報告等方面確實不容易,而且由於缺乏cobertura插件的支持,這將是一項艱鉅的任務。我真的會考慮兩次(投資時間讓整個事情與所產生的價值一起工作),或考慮花時間(理解金錢)來獲得三葉草許可證(爲此提供更好的支持)。

+0

+1是的。聲納似乎只是報告的合理選擇。 – cetnar 2010-01-07 20:46:32

+0

我們已經使用聲納,但它沒有爲我的具體需求提供解決方案,我想從JBOSS容器內部獲得覆蓋範圍信息,而不僅僅是在容器外。所以,儘管Sonar在單元測試方面做得很好,但對於我的需求來說卻並非解決方案。 – Marco 2010-01-07 21:06:12

+0

這與Sonar無關。聲納彙總了你給他彙總的內容。因此,如果您測試EAR,將它部署在JBoss上(例如使用Cargo),並將集成測試作爲構建的一部分運行,則Sonar肯定能夠使用Cobertura生成的數據。不要指望有任何工具可以神奇地做到這一點,你需要在maven級別處理這個工具。 – 2010-01-07 21:12:07

1

看起來cobertura-maven-plugin中沒有任何任務用於將單個項目的.ser文件合併到單個報表中。

谷歌搜索出現了this feature request and patch爲插件添加合併任務,但它看起來並不像它被接受。 One of the comments建議使用the dashboard plugin來完成同樣的事情,你可能會有一些成功的。

+0

我能想到的唯一解決方案是從單獨的子模塊中創建幾個.ser文件,並嘗試使用命令行工具合併它們。然後將其饋送到JBoss容器中進行數據豐富。 – Marco 2010-01-07 21:07:39

相關問題