不知道如果我正確地理解您的擔心,但使用EJB進行集成測試需要兩件事:
1.首先,你需要做OpenEJB的知道任何的EJB可以在即將到來的測試提供的。這就是ejbJar.addEnterpriseBean(new StatelessBean(MyService.class));
部分的用途。
2.其次,您可以直接指定您的測試使用的所有EJB注入,方法與您在普通代碼中所做的相同。請記住,如果您在測試中調用的EJB依賴於任何其他EJB,則需要使用.addEnterpriseBean()
方法指定它們全部。例如:
public class SomeProcessingServiceIntegrationTest extends AbstractOpenEJBTestNG {
@EJB
SomeProcessingServiceLocal processingService;
@Module
public EjbModule beans() {
EjbJar ejbJar = new EjbJar("processing");
OpenejbJar openejbJar = new OpenejbJar();
ejbJar.addEnterpriseBean(new StatelessBean(SomeProcessingService.class));
ejbJar.addEnterpriseBean(new StatelessBean(DatabaseLookupService.class));
}
@Test
public void testProcessingService(){
// Should return true for example
assertTrue(processingService.process());
}
}
@Stateless
@Local(SomeProcessingServiceLocal.class)
public class SomeProcessingService {
@EJB
DatabaseLookupServiceLocal databaseLookupService;
public boolean process(){
return databaseLookupService.existsInDB();
}
}