gpt4 book ai didi

java - 如何在 JUnit 测试类中注入(inject)多个 EJB

转载 作者:行者123 更新时间:2023-11-30 02:01:16 27 4
gpt4 key购买 nike

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

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

谢谢

最佳答案

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

@Stateless
public class ServiceBean implements Service {

@Inject
private Dao dao;

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

}

您应该使用Mockito以这种方式模拟 Dao (应该是一个接口(interface),而不是一个具体类):

@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 正在从接口(interface) Dao 创建一个模拟对象,它将模仿实现;
  • 此模拟将被注入(inject)到 ServiceBean 实例中;
  • 在指示模拟时使用方法。
  • 您的单元测试仅验证 ServiceBean 行为,不会对依赖项执行任何测试,这些测试应在另一个测试类中进行测试。这允许您隔离类中的组件。

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

关于java - 如何在 JUnit 测试类中注入(inject)多个 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52757822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com