2011-07-13 26 views
1

我使用mockejb框架來模擬內存中的實體bean,我做了一個查找,mockejb爲我帶來了一個真實實體的代理。這很奏效。(MockEJB)從容器內測試獲取模擬的實體bean

但我需要從容器JNDI獲得一個會話Bean來「理解」那個。我的意思是,當Session Bean對Entity Bean進行查找時,我希望它接收我嘲笑的bean,而不是數據庫中的bean。

我不能模擬這個會話Bean,因爲在我試圖模擬的方法中,有一個查詢實體bean,所以我需要這個方法來正常執行,但在查找時接收模擬bean。

[更新] 信息對我的發展環境: 我將使用IBM RSA 7.5,IBM的Websphere 6.1, 我有一個容器內用仙人掌運行Web測試項目,在我的類路徑中最後一個庫是:

  • 仙人掌1.7.2.jar
  • CGLIB的節點p-2.1_3.jar
  • 公地httpclient的-2.0.2.jar
  • 共享記錄-1.0.4.jar
  • powermock-EasyMock的-1.3.9-full.jar
  • 的junit-3.8.1.jar
  • mockejb.jar

實驗值:我已經改到最新版本powermock與jUnit4,並試圖只使用EasyMock 3.0,並嘗試與它的類擴展EasyMock 2.x。這些都沒有奏效。真正讓我感興趣的是EasyMock文檔中提到的DefaultInstantiator配置:http://easymock.org/EasyMock2_4_ClassExtension_Documentation.html。我想知道如果這是我的情況(不支持JVM),我無法使它工作。

感謝您的幫助。

回答

1

「我不能嘲笑這個Session Bean的,因爲該方法我想嘲笑裏面,有一個查找到實體bean的話,」

你不能使用類似PowerMock爲「假」查找?就像一個替代的方法等

下面是一些我碰到最近: http://dave00ster.blogspot.com/2011/07/powermock-static-method-replace.html

希望這有助於 dave00

+0

謝謝,我想。但現在的問題是,查找的類是單例= S。所以,我試圖按照說明來模擬特定的靜態方法(http://redchilliplus.wordpress.com/2010/06/08/unit-testing-in-java-with-easymock-and-powermock/和http:// code.google.com/p/powermock/source/browse/trunk/modules/module-test/easymock/junit4-test/src/test/java/samples/junit4/singleton/MockStaticTest.java)但他們都沒有工作=/ –

+0

我忘了提,但似乎模擬不能正確使用我正在使用的JVM。它給了我一個錯誤:「<類的名稱>不是一個接口。」即使在使用EasyMock 3或EasyMock 2.x時使用類擴展或PowerMock = S –

+0

如果您發佈瞭如何特別設置測試類和classpath(或pom.xml),也許我們可以提供幫助。 – dbalakirev