如何在JUnit测试类中注入多个EJB

时间:2018-10-11 10:28:07

标签: java junit ejb

我正在尝试测试具有多个与其他EJB连接的EJB的类。

如何将该类中的所有EJB注入到JUnit测试类中?

谢谢

1 个答案:

答案 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()));
    }

}

这是怎么回事:

  • Mockito正在通过接口Dao创建一个模拟对象,该对象将模拟实现;
  • 此模拟将被注入ServiceBean实例中;
  • 使用方法when指导模拟。
  • 您的单元测试仅验证ServiceBean的行为,不对依赖项执行任何测试,这些测试应在另一个测试类中进行测试。这使您可以隔离类中的组件。

Mockito网站包含有关如何正确执行此操作的各种教程。