2013-04-15 66 views
2

我寫了一些當前從Maven運行的JUnit集成測試(通過命令行或出口CI服務器)。這些集成測試會在Maven的「預集成測試」生命週期階段內自動配置和啓動數據庫和servlet容器。在Eclipse中運行需要Maven預集成測試執行的JUnit集成測試?

我非常想從Eclipse JUnit啓動配置中運行這些JUnit測試(就像我做所有其他測試一樣)。但是,JUnit啓動配置不會觸發預集成測試執行,因此測試環境未正確建立。

什麼是最好的方式來得到這個工作?

+0

您是否找到針對您的問題的解決方案?我有完全相同的需求。實際上,在整合前測試階段必須完成的唯一任務是啓動一個tomcat服務器,並且我一直在手動執行此操作。所以,如果服務器正在運行,我可以在Eclipse上調試集成測試。 –

+0

是的 - 我們將所有的數據庫設置和配置代碼移入了一些管理器對象,可以通過Spring進行配置,然後在我們的系統啓動時運行。然後,我們添加到每個Junit文件'@ContextConfiguration({「/testWeb-applicationContext.xml」})註釋中,以便在運行任何測試之前啓動Spring應用程序上下文。希望這可以幫助。 – HDave

回答

1

的一種方法是使用Eclipse啓動組如下所示:

http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.cdt.debug.application.doc%2Freference%2Fcdt_u_run_dbg_launch_group.htm

我錯過了這一點,因爲這種能力,而從C/C安裝獨立於語言的需求++如下圖所示的Eclipse的一面:

What installable component provides 'launch groups' in Eclipse?

在發射組的第一個工作應該運行maven任務處理測試資源,接下來的工作啓動SERV呃(s),然後最後執行junit測試。

0

我不知道你想使用哪個數據庫,但是對於單元測試來說,它使用內存數據庫和嵌入式servlet容器都很方便。也許你可以使用類似http://arquillian.org/

+0

我們根據Maven配置文件使用多個數據庫....所有這些數據庫都是在預集成測試生命週期階段通過Maven自動設置和配置的。問題是如何儘可能通過JUNit Eclipse啓動配置完成該工作 – HDave

3

假設你有用於Eclipse的Maven插件,你可以使用Run -> Run Configurations設置Maven Run Configurations在Eclipse中運行。使用目標clean verify將運行單元測試和集成測試。

此外,如果您使用的故障安全報告Maven插件,你可以創建JUnit風格報表,就可以在Eclipse中使用JUnit框架打開,看看哪些測試通過和失敗。

+0

這就是我們目前所做的,但它與eclipse中極其方便的JUnit GUI斷開連接。不知道可以在Eclipse中的JUnit GUI中打開故障安全報告......將不得不檢查。謝謝。 – HDave

+0

原來你也可以用Surefire的XML輸出來做到這一點。 – HDave

-1

JUnit框架應該主要用於單元測試而不是集成測試。集成測試可由質量保證小組執行。

如果你有很多集成管道代碼,那麼你應該考慮外部元素的模擬,比如數據庫和Web服務調用。

主要集中在測試您編寫的代碼。添加負面,積極和特殊的測試場景。這將使您的代碼比完整集成測試更可靠。

數據庫我建議使用的DbUnit>http://www.dbunit.org/這是測試數據庫水暖一個很好的工具。此工具可以從數據庫創建XML模式,並且可以將數據保留爲xml複製數據庫。 這將避免爲您的JUnit測試更改任何數據集。要做到這一點,我剛剛發現

+0

我同意Eclipse的JUnit功能適用於單元測試而不是集成測試。事實上,除了這個問題所涉及的集成測試之外,我們已經有很多單元測試。 IMO,集成測試應該由Maven作爲構建過程的一部分(在CI服務器上)完成,並由開發人員在IDE內手工運行測試作爲調試工具。我只是試圖通過使用JUnit GUI來簡化這種體驗。我們爲其他集成測試執行此操作,但不是那些需要「預集成測試」生命週期階段的測試。 – HDave

+1

我相信你可能已經考慮過JUnit Classpath設置,Environment和@Setup方法。預集成測試階段是否如此複雜以至於無法適應上述地點? – Venod

+0

這是一個有效的問題,但是,對於這些Maven執行,我們有一個TON的配置。我越來越多地想到,我只需要爲Maven執行首先製作一個啓動器,然後是一秒鐘執行JUnit。 http://stackoverflow.com/questions/4053265/eclipse-running-multiple-launch-configurations-at-once – HDave