Jakarta ee EJB3.1的测试方法

Jakarta ee EJB3.1的测试方法,jakarta-ee,jboss7.x,ejb-3.1,openejb,embedded-container,Jakarta Ee,Jboss7.x,Ejb 3.1,Openejb,Embedded Container,我目前正在3.1版中测试EJB的主题下工作,我对它只有一些经验。因此,我查阅了文献,找到了测试EJB的三种不同方式/方法(版本3.0及更新版本) 1) 使用简单的POJT(普通的旧Java测试) 2) 嵌入式容器的使用 3) 在应用服务器中测试应用程序 在我弄明白了这些不同的方法之后,我自己开始了一些研究,并发现了一些可能性 对于案例1),JUnit或TestNG等工具近乎完美,为了解决注释问题,可以使用EasyGloss库。对于非常简单的豆子来说,简单的损失是不必要的。“本地”测试工作正常,直

我目前正在3.1版中测试EJB的主题下工作,我对它只有一些经验。因此,我查阅了文献,找到了测试EJB的三种不同方式/方法(版本3.0及更新版本)

1) 使用简单的POJT(普通的旧Java测试)

2) 嵌入式容器的使用

3) 在应用服务器中测试应用程序

在我弄明白了这些不同的方法之后,我自己开始了一些研究,并发现了一些可能性

对于案例1),JUnit或TestNG等工具近乎完美,为了解决注释问题,可以使用EasyGloss库。对于非常简单的豆子来说,简单的损失是不必要的。“本地”测试工作正常,直到bean需要访问上下文(例如sessionContext)、使用事务或拦截器

我使用JBoss AS 7.1.1,据我所知,这个应用服务器不提供嵌入式容器。因此,我可以切换到Glassfish(我不喜欢),或者使用OpenEJB或Arquillian等替代方法来处理案例2)的测试

我知道你们在测试javeee和ejb方面有更多的经验和知识。所以我想问你,你是否愿意和我分享你的经验,也许能给我一些提示和窍门,更多的想法或是关于EJB有效测试的示例代码

编辑:
添加了更多信息(案例1)。

嵌入式容器是EJB3.1的一部分,因此即使JBossAS7也必须实现它

Arquillian也是一个很好的选择,因为as 7启动速度很快,所以外部as的额外开销并不是那么大


您还可以将Arquilloan与AS 7应该提供的嵌入式容器相结合。

正如Vinet指出的,有一个JBoss嵌入式容器。但是,只要您不使用特定类,在使用嵌入式Glassfish容器时就不会出现问题(这是一个简单的示例)。如果您大量使用提供的EJB基础设施,则嵌入式容器尤其有趣;正如您提到的拦截器、事务等。否则,与普通单元测试相比,优势并没有那么大

应用服务器中测试应用程序时,如果组件是远程bean,则可以通过单元测试中的JNDI查找直接测试它们;您还可以将远程bean集成为测试挂钩。然而,如果您想测试CDI或本地bean,Arquillian尤其有趣,因为您无法远程访问它们

我认为有必要将嵌入式容器或Arquillian等工具/技术与普通单元测试进行比较。有很大的优势吗?如果没有工具,是否有我无法涵盖的测试?
仅仅因为有些东西是新的和酷的,并不意味着你一定会从中受益:)

如果你正在寻找AS7的嵌入式Arquillian容器。我不确定它什么时候发布。注意,这在概念上与EJB3.1嵌入式容器不同,EJB3.1嵌入式容器的使用说明如下。