我们正在使用AbstractOpenEJBTestNG
类和openEJB来加载类。
许多类都加载了以下语句:
ejbJar.addEnterpriseBean(new StatelessBean(MyService.class));
但我也在课程顶部看到@EJB
注释。我理解为,要在openEJB容器中加载EJB,我们需要使用上面的语句。但我不确定我们是否也可以使用@EJB注释。所以我们可以其中任何一个?或者每种方法的具体用例?
谢谢!
答案 0 :(得分:0)
不确定我是否理解您的问题,但是要对EJB执行集成测试,您需要两件事:
1.首先,您需要让OpenEJB知道它可以在即将进行的测试中提供的任何EJB。这就是ejbJar.addEnterpriseBean(new StatelessBean(MyService.class));
部分是为了。
2.其次,您可以直接指定测试使用的所有EJB注入,就像在普通代码中一样。请记住,如果您在测试中调用的EJB依赖于任何其他EJB,则需要使用.addEnterpriseBean()
方法指定所有EJB。例如:
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();
}
}