我正在尝试测试具有多个与其他EJB连接的EJB的类。
如何将该类中的所有EJB注入到JUnit测试类中?
谢谢
答案 0 :(得分:2)
您不应注入所有依赖项。您应该使用Mockito之类的框架来模拟/模拟那些依赖关系,以便测试EJB。 假设您有以下bean:
@Stateless
public class ServiceBean implements Service {
@Inject
private Dao dao;
public boolean insert(Someclass someClass){
return dao.insert(someClass);
}
}
您应该使用Mockito来模拟Dao
(应该是接口,而不是具体的类):
@RunWith(MockitoJUnitRunner.class)
public class ServiceBeanTest {
@Mock
private Dao daoMock;
@InjectMocks
private ServiceBean bean;
@Test
public void testInsert() {
when(daoMock.insert(Matchers.any(SomeClass.class))).thenReturn(true);
assertTrue(bean.insert(new Someclass()));
}
}
这是怎么回事:
Dao
创建一个模拟对象,该对象将模拟实现; ServiceBean
实例中; when
指导模拟。ServiceBean
的行为,不对依赖项执行任何测试,这些测试应在另一个测试类中进行测试。这使您可以隔离类中的组件。Mockito网站包含有关如何正确执行此操作的各种教程。