gpt4 book ai didi

jakarta-ee - 托管和 session Bean的模拟和集成测试

转载 作者:行者123 更新时间:2023-12-02 04:04:12 26 4
gpt4 key购买 nike

我不知道我在做什么错,但是我真的很沮丧,并且在时间上竞争。我有从数据库派生的EJB实体,无状态的本地 session Bean(其中大多数是Facade),这些实体将这些实体持久化为使用 session 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)测试。
我还需要在 session bean中进行模拟和与db测试的集成。使用Arquillian进行的测试也很少(据我了解,Arquillian将测试与Jboss服务器集成在一起)

谁能解释或编写一些示例代码,或指向某些站点,但请让它们与我的情况相关?

我正在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);
}
}

如您所见,我在JUnit设置所有依赖项的模拟的@Before方法中初始化了托管bean。在实际测试中,我使用 Mockito.verify来验证是否在 session bean上调用了 createObject

关于jakarta-ee - 托管和 session Bean的模拟和集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526678/

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