我们在JUnit中使用EJBContainer测试EJB.测试bean调用的另一个EJB使用@alternative bean进行测试.此模拟bean配置为< alternative>在beans.xml中
一切都像魅力一样,EJB经过测试并使用模拟服务.
问题:是否可以仅使用代码执行相同操作,而不是使用beans.xml?
当然,beans.xml提供了很好的灵活性,但有时人们可能希望为同一个bean提供不同的@alternative,并且可以在同一个项目中为单个/其他测试选择一个特定的.也许另一个解决方案是某些测试的特定beans.xml(问题如何选择它)?
我们的一些测试代码(ExtensionMock由经过测试的EchoRemote实现和部分测试调用):
public class EchoTest {
private EJBContainer ejbContainer;
private Context ctx;
@Before
public void setUp() throws NamingException {
ejbContainer = EJBContainer.createEJBContainer();
ctx = ejbContainer.getContext();
}
@After
public void tearDown() {
ejbContainer.close();
}
@Test
public void testFindAll() {
try {
EchoRemote userEJB = (EchoRemote) ctx.lookup("java:global/ssb-ejb/Echo!examples.ssb.EchoRemote");
assertNotNull(userEJB);
assertEquals("Hello World", userEJB.echo("Hello World"));
} catch (NamingException e) {
throw new AssertionError(e);
}
}
}
<beans>
<alternatives>
<class>examples.ssb.EchoExtensionMock</class>
</alternatives>
</beans>
解决方法:
您可以扩展现有的实现并使用@Specializes注释它,而不是创建独立的@Alternative实现.
另见:http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/Specializes.html
标签:ejb-3-1,java,junit,cdi,ejb
来源: https://codeday.me/bug/20190831/1776965.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。