Jakarta ee 托管会话和会话bean的模拟和集成测试

Jakarta ee 托管会话和会话bean的模拟和集成测试,jakarta-ee,junit,mocking,ejb,integration,Jakarta Ee,Junit,Mocking,Ejb,Integration,我不知道我做错了什么,但我真的很沮丧,在与时间赛跑。我有从数据库派生的EJB实体、将这些实体持久化到db的无状态本地会话bean(大多数是Facade)和使用会话bean的托管bean 因此,我的托管bean如下所示: @ManagedBean public class SomeBean { //attributes @EJB private SomeSessionBean sb; // getters and setters and other method

我不知道我做错了什么,但我真的很沮丧,在与时间赛跑。我有从数据库派生的EJB实体、将这些实体持久化到db的无状态本地会话bean(大多数是Facade)和使用会话bean的托管bean

因此,我的托管bean如下所示:

@ManagedBean
public class SomeBean {

   //attributes

    @EJB
    private SomeSessionBean sb;

    // getters and setters and other methods

    public void createObject(){
       // some logic
          sh.method(arguments);
    }
}
我需要在我的托管bean中进行一些JUnit模拟(最好使用Mockito)测试。 我还需要在会话bean中进行模拟测试和与db的集成测试

谁能解释或写一些示例代码,或指向一些网站,但请让它们与我的案例相关


我在NetBeans的一个web应用程序中工作。

如果您对依赖项使用setter,那么使用JUnit和Mockito测试托管bean很容易。您的示例可以如下所示:

@ManagedBean
public class SomeBean {

    private SomeSessionBean sb;

    @EJB 
    public void setSomeSessionBean(SomeSessionBean sb) {
        this.sb = sb;
    }

    public void createObject(Object obj) {
        sb.createObject(obj);
    }
}
@RunWith(MockitoJUnitRunner.class)
public class SomeBeanTest {

    private SomeBean bean;

    @Mock
    private SomeSessionBean sb;

    @Before
    public void setUp() throws Exception {
        bean = new SomeBean();
        bean.setSomeSessionBean(sb);
    }

    @Test
    public void testCreateObject() throws Exception {
        Object obj = new Object();

        bean.createObject(obj);

        Mockito.verify(sb).createObject(obj);
    }
}
测试如下所示:

@ManagedBean
public class SomeBean {

    private SomeSessionBean sb;

    @EJB 
    public void setSomeSessionBean(SomeSessionBean sb) {
        this.sb = sb;
    }

    public void createObject(Object obj) {
        sb.createObject(obj);
    }
}
@RunWith(MockitoJUnitRunner.class)
public class SomeBeanTest {

    private SomeBean bean;

    @Mock
    private SomeSessionBean sb;

    @Before
    public void setUp() throws Exception {
        bean = new SomeBean();
        bean.setSomeSessionBean(sb);
    }

    @Test
    public void testCreateObject() throws Exception {
        Object obj = new Object();

        bean.createObject(obj);

        Mockito.verify(sb).createObject(obj);
    }
}

如您所见,我在JUnit的@Before方法中初始化托管bean,为所有依赖项设置mock。在实际测试中,我使用它来验证会话bean上是否调用了
createObject

是否有其他方法来执行此类测试,而不是为我要模拟的每个EJB提供一个setter?