2012-08-22 73 views
0

我們正在爲Java EE應用程序編寫集成測試,並且無法就一件事達成一致。Java集成測試。何時使用嵌入式服務器?

集成測試應該在嵌入式服務器上運行嗎?

在完整的Java EE服務器上運行測試真的有什麼好處嗎?

我在這個方法中看到很多問題,最大的問題是我們應該通過@Remote界面或者通過一些Web Service以某種方式公開EJB商業方法。

此外,我們計劃在Jenkins服務器上運行這些集成測試。我們已經有了一個構建配置,可以打包我們的應用並將其部署到Glassfish服務器上。所以,也許有這個想法,應該影響我們的決定,無論是使用嵌入式還是真實服務器?

回答

2

要執行鍼對@Local視圖的測試,您要麼將容器嵌入到測試vm中,要麼將測試嵌入到容器中。

你可以吃你的蛋糕,也可以吃它...做兩個:) Arquillian API是足夠好的,你可以有一個測試,可以配置做這兩個。

當你用一個像OpenEJB這樣的嵌入式容器開發時,快速運行測試,然後在Jenkins中再次運行,看起來像生產服務器(這會變慢)。

不要把自己限制在想你只需要選擇一個或另一個。

2

如果服務器嵌入或不嵌入,這並不重要。但它需要啓動速度非常快,內存消耗量低。這樣你可以在開發者機器上本地運行它們。優點:

  • 測試將被更頻繁地運行,蟲子會更迅速地抓住
  • 更容易編寫和調試測試時,你可以快速的本地運行
  • 它允許(容易)TDD
  • 如果沒有在開發人員計算機上運行的集成測試(例如REST API),某些功能將無法生成。

而且您不需要公開EJB @Remote或作爲Web服務在嵌入式服務器中運行。事實上,你根本不需要修改它們。如果你決定使用Java EE集成框架,我不這麼認爲,但是你可以看看Arquilian

我也可以建議OpenEJB作爲本地集成測試的快速EJB容器。

在Jenkins上對真實(生產)服務器測試運行集成測試提交代碼。作爲多一個安全網非常有用。但是開發人員應該有自己的一種方法來在開發之前和提交之前測試他們的代碼。

+0

謝謝。你有一些有效的點。但是,正如我所說的,集成測試將主要作爲Jenkins構建的一部分運行,並且該應用程序將仍然部署在遠程服務器上。這就是爲什麼我懷疑,如果全功能的服務器已經運行,是否值得啓動嵌入式服務器。是的,我已經在嘗試Arquillian。另外,我們的一些同事聲稱集成測試應該在真實環境中運行。我很困惑:) – jFrenetic

+0

因此,考慮到你的編輯,你認爲作爲CI的一部分,最好在真實環境中運行IT。 – jFrenetic

+0

是的,它更好。詹金斯在後臺運行,速度並不那麼重要。 – dcernahoschi

相關問題