2012-11-01 22 views
1

首先需要建議,這裏是我的設置:關於EJB3 bean類型VS單元測試

  • 應用服務器:JBOSS 4.2.3GA
  • 框架中使用:在Struts 2,EJB3
  • DBMS:在PostgreSQL 9.0 .3

默認情況下,爲安全起見,我總是將我的bean設置爲@Local。當不需要它時,我不想在同一容器內打開其他應用程序的門。

現在,我專注於開發測試(測試驅動開發)。因此,我爲我的測試創建了一個單獨的項目(一種測試項目),以避免編寫我的測試代碼並在與應用程序相同的項目中安裝測試工具(EasyMock,jUnit,StrutsTest等)。

所以......這意味着我將我的bean設置爲@Remote以便能夠從我的jUnit測試類訪問它們。

我的問題是:有沒有辦法使用某種條件編譯/構建從@Local切換到@Remote?每次將我的bean設置回本地是非常麻煩和無聊的。每個開發人員都知道重構會帶來問題,所以我正試圖找到一種管理我的bean可見性的正確方法。另一個想法是來自一個屬性或XML文件,所以我只需要根據我的需要打開或關閉一件事。

對於每一個bean來測試,我需要: - 設置接口@Remote - 遠程接口添加工具項目在會話bean

任何想法?

非常感謝您

查爾斯

回答

2

如果我沒有理解好了,你從你的單元測試連接到應用服務器來訪問遠程EJB,對不對?

我沒有一直與EJB自從幾年,但有兩種方法單元測試的EJB沒有遠程通信:

  1. 使用嵌入式容器,見Embedding EJB 3.1 Container Into Your Unit Tests
  2. 你用你的EJB作爲簡單的java類並自己模擬依賴關係,請參見Unit Testing for Java EE。您可以將模擬配置爲特定事件返回特定值。

希望它有幫助。

+0

是的,您是對的,我試圖達到這個目的。 。 謝謝! –

0

另一種選擇,而不是使用嵌入式容器
(JBoss的嵌入式容器狀況非常糟,我affraid :()
是使用像Arquilian一個工具,它具有展開API,
並能創造一個「迷你企業應用程序「,通過測試代碼生成,以包含您的EJB並將它們部署到應用程序服務器上。