2009-12-22 93 views
24

我想問你的首選方法來測試Java EE代碼?你如何測試Java EE代碼?

我發現只有三個項目,正試圖幫助在Java EE環境的代碼單元測試:

所以我想,

  • 是否有幫助編寫(j)Java EE代碼的單元測試的框架?
  • 您是否使用嵌入式Java EE服務器,如jboss或glassfish v3?
  • 你模擬並注入自己?

非常感謝......

+0

請參閱http://stackoverflow.com/questions/1733805/where-can-i-find-good-unit-testing-resources-for-ejb-and-j2ee – ewernli 2009-12-22 17:23:17

+0

Antoher過時的項目:http:// sourceforge.net/projects/mockejb/最後發佈日期:2004-09-04 – marabol 2009-12-22 17:36:31

+1

Adam Bien有關[本文](http://www.oracle.com/technetwork/articles/java/unittesting-455385.html)從2011年開始測試JavaEE。 – 2014-01-15 14:24:54

回答

24

如果單元測試你的意思是......單元測試(單獨測試單元),那麼你其實並不需要,因爲EJB3任何特定的框架。 0只不過是帶註釋的POJO,因此可以在沒有任何特殊夾具的情況下進行相對簡單的測試。現在

,如果你的意思是別的東西 - 就像集成測試功能測試 - 那麼,,工具可以幫助和簡化的東西(但你真的應該開始使用正確的術語:)我」我會認爲這是你的想法。

首先,JUnitEE看起來已經過時了,我甚至不確定它對EJB3.x有什麼意義。其次,的Java EE 5 support並沒有給我留下深刻的印象,並且不得不部署仙人掌測試是件痛苦的事情(我認爲仙人掌對於J2EE 1.4來說很不錯,但現在有點過時了)。所以這給我們留下了Ejb3Unit這在我看來是最好的選擇,特別是如果你想運行出容器測試,即沒有真正部署應用程序(更快)。

如果你想運行在容器測試,那麼你確實可以使用嵌入容器和我目前傾向於去GlassFish的第三版,甚至對Java EE 5(我可能是錯的,但我對漂亮的失望從最新的JBoss發佈時間開始,所以沒有引起我的注意)。請參閱GlassFish Embedded Reloaded, an appserver in your pocket以瞭解示例代碼(可以從您的測試中使用)或Using maven plugin for v3 embedded glassfish(如果您使用的是maven)。

另一種選擇是將應用程序打包並部署到Cargo,然後針對部署的應用程序(例如使用Selenium或BDD工具)運行一些測試。如果要使用不提供任何嵌入式API的容器運行端到端測試,這可能很有用。因此,爲了回答你的最後一個問題,我確實會使用可用的工具,也許是它們的組合,用於不是單元測試的測試,並且不會自己模擬/注入東西,除非它們不覆蓋某些東西需要我現在無法想象的。

+0

我聽說Cactus項目正在與新的首席開發人員Petar Tahchiev一起恢復生機。 JSFUnit基於仙人掌。 – cetnar 2009-12-23 07:36:10

+0

@cetnar哦,很高興知道!實際上,我可能過於關注EJB3,完全忘了JSF。非常感謝您提供這些信息。 – 2009-12-23 07:49:45

+0

非常感謝。 我想,我會爲我所有的EJB pojos創建cunstructors,以便在沒有任何反射的情況下進行注入。貨物對於集成測試是非常重要的。謝謝! – marabol 2009-12-24 09:37:41

2

由於您對單元測試感興趣,我推薦JUnit。您可以單元測試核心類中的方法。如果您在使用JUnit編寫單元測試用例時遇到困難,那麼設計可能不是模塊化的,而且它是高度耦合的。首先關注核心功能並使用JUnit進行測試。

2

我一直在面對基於Java EE 6容器中的JUnit進行集成測試(確切地說是Glassfish v3)的相同問題,並且經過大量瀏覽和搜索之後,我找不到解決方案非常適合我的需求,所以我寫了我自己的,現在在Google Code上發佈爲jeeunit

我不會稱之爲一個測試框架,它實際上只是一個提供JUnit和嵌入式Glassfish的之間的膠類屈指可數。

的總體思路是相似的仙人掌,你的測試容器中運行,並得到由來自外部的一個servlet觸發。

jeeunit支持JUnit 4,Glassfish v3和CDI,並像Ant或Maven Surefire一樣生成標準XML JUnit報告(實際上,我重用了Ant的一些代碼來生成報告)。

1

我有一個要求,測試CDI應用程序中寫道,Web容器的外部運行一切自定義的JUnit運行。

http://jglue.org/cdi-unit/

適用於Java SE和還支持虛擬請求,會話和會話作用域的測試Web應用程序。

它體積小,速度快,這是偉大的,當你有很多的單元測試。