是否有可能在Arquillian中使用某種模擬框架,或者精確地如何模擬注入的EJB?我知道,通過使用CDI(上下文和依賴注入),可以在測試中注入替代品。但是,如果沒有CDI作爲注入機制,那麼當我只使用EJB注入時,這是如何實現的?如何用Arquillian模擬服務?
最近我已經測試我的服務接口模擬實現的EJB如下:
// Service inteface
public interface Audit {
void audit(String info);
}
// Mock implementation
@Stateless
public class MockAuditBean implements Audit {
public static String lastInfo = null;
@Override
public void audit(String info) {
this.lastInfo = info;
}
}
// assert in test
assertTrue(MockAuditBean.lastInfo.contains("dummy"));
這種方法是可行的,但需要大量的定製模擬實現的。更糟糕的是,注入的mock實例是代理服務器並使用服務接口。這些不能轉換爲模擬實現類來比較結果。只能使用靜態成員和模擬實現方法。
我也測試了另一種手動設置相關EJB的可能性。這種方法有幾個缺點。它要求測試的目標EJB具有非私有成員或設置者。當目標EJB依賴@PostConstruct生命週期註釋時,必須在手動「注入」設置後調用它。 這個解決方案的優點是可以使用模擬框架,比如mockito或者jMock。
有人有共享經驗,如何測試和設置這樣的集成測試,甚至使用嘲笑框架呢?
你能至少要解釋一些鏈接的內容?僅鏈接就會受到「鏈接腐爛」的影響,我們將讚賞這種努力。 – trudyscousin 2013-01-25 18:33:24