簡體   English   中英

你如何對Java EE代碼進行單元測試?

[英]How do you unit test Java EE code?

我想問一下您測試Java EE代碼的首選方法?

我發現只有三個項目,它們試圖幫助在Java EE環境中編寫單元測試代碼:

所以我想,

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

非常感謝...

如果通過單元測試你的意思是...單元測試(單獨測試一個單元),那么你實際上不需要任何特定的框架,因為EJB3.0只不過是帶注釋的POJO,因此可以相對容易地測試而無需任何特殊的夾具。

現在,如果您指的是其他東西 - 比如集成測試功能測試 - 那么, 是的 ,工具可以幫助和簡化事情(但您應該真正開始使用正確的術語:)我會假設這是您的想法。

首先, JUnitEE似乎已經死了,已經過時了,我甚至不確定它對EJB3.x有什么作用。 其次,我對CactusJava EE 5支持印象不深,並且不得不部署Cactus測試很痛苦(我認為Cactus對於J2EE 1.4很不錯,但現在有點過時了)。 所以這給我們留下了Ejb3Unit ,這在我看來是最好的選擇,特別是如果你想用完容器測試,即沒有真正部署應用程序(更快)。

如果你想在容器測試中運行,那么你確實可以使用嵌入式容器,我當前的首選項是GlassFish v3,即使對於Java EE 5(我可能錯了,但我對最新JBoss的開始時間感到非常失望)釋放所以它沒有引起我的注意)。 請參閱后面的GlassFish Embedded Reloaded文件,您可以在口袋中找到示例代碼(您可以在測試中使用 )或使用maven插件獲取v3嵌入式glassfish (如果您使用的是maven)。

另一個選擇是使用Cargo打包和部署您的應用程序,然后針對已部署的應用程序運行一些測試(例如,使用Selenium或BDD工具)。 如果要使用不提供任何嵌入式API的容器運行端到端測試,這可能很有用。

所以,為了回答你的上一個問題,我確實會使用可用的工具,也許是它們的組合,用於非單元測試的測試,不會自己模擬/注入東西,除非它們不能滿足我的某些需求。現在想起來。

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

我一直面臨着在Java EE 6容器中運行基於JUnit的集成測試的問題(確切地說是Glassfish v3),經過大量的瀏覽和搜索,我找不到真正適合我需要的解決方案,所以我寫了自己的,現在在Google Code上發布為jeeunit

我不會把它稱為測試框架,它實際上只是少數提供JUnit和Embedded Glassfish之間粘合劑的類。

一般的想法類似於Cactus,您的測試在容器中運行,並由外部的servlet觸發。

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

我需要測試CDI應用程序並編寫一個自定義JUnit運行程序,它運行Web容器之外的所有內容。

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

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

它小巧而快速,當您進行大量單元測試時非常棒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM