Jakarta ee 托管会话和会话bean的模拟和集成测试
我不知道我做错了什么,但我真的很沮丧,在与时间赛跑。我有从数据库派生的EJB实体、将这些实体持久化到db的无状态本地会话bean(大多数是Facade)和使用会话bean的托管bean 因此,我的托管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
@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?