Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JUnit测试类中注入多个EJB_Java_Junit_Ejb - Fatal编程技术网

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

Java 如何在JUnit测试类中注入多个EJB,java,junit,ejb,Java,Junit,Ejb,我正在尝试测试一个类,该类具有多个与其他EJB连接的EJB 如何将该类中的所有EJB注入JUnit测试类 谢谢您不应该注入所有依赖项。为了测试EJB,您应该使用类似Mockito的框架来模拟/模拟这些依赖项。 假设您有以下bean: @Stateless public class ServiceBean implements Service { @Inject private Dao dao; public boolean insert(Someclass som

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

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


谢谢

您不应该注入所有依赖项。为了测试EJB,您应该使用类似Mockito的框架来模拟/模拟这些依赖项。 假设您有以下bean:

@Stateless
public class ServiceBean implements Service {

    @Inject
    private Dao dao;  

    public boolean insert(Someclass someClass){
        return dao.insert(someClass);
    }

}
您应该使用以下方式模拟
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
    实例中
  • 当指示模拟时,使用方法
  • 您的单元测试只验证
    ServiceBean
    行为,不会对依赖项执行任何测试,这些依赖项应该在另一个测试类中进行测试。这允许您隔离类中的组件
Mockito网站包含了关于如何正确执行此操作的各种教程。

当然!这里有一个例子,从这里开始,我保证我会尽快用一个完整的例子更新我的答案。