EJB测试策略?

时间:2010-09-15 20:26:18

标签: java java-ee glassfish ejb java-ee-6

我正在研究Java EE 6应用程序。当我开始时,我通过手动实例化EJB,然后手动添加通常由依赖注入提供的成员来为我的EJB类编写测试。随着应用程序变得越来越复杂,我发现这种方法并没有削减它。所以我希望能够在测试框架中启动自己的EJB容器,这样它就可以管理我的bean。什么是最好的方法来解决这个问题?我听说过javax.ejb.embeddable.EJBContainer,还有其他选择吗?

(我正在使用Glassfish 3,并使用Maven进行构建,如果这有任何区别的话。)

4 个答案:

答案 0 :(得分:2)

你究竟在测试什么?逻辑?组态?您是否需要直接测试EJB类?您的测试是否足以作为针对正在运行的容器的EJB客户端? (请记住,没有规则说自动化单元测试不需要运行中的系统。)

如果需要测试业务逻辑,请将该代码移入POJO并正常测试;然后,您不需要测试在容器中运行的POJO,因为容器不应该影响业务逻辑。

在相关的情况下,我从来没有直接JUnit测试过servlet类或Struts控制器类。我绝对测试那些依赖的POJO,并测试最终应用程序(在servlet容器中运行,使用HtmlUnit测试),假设如果最终应用程序正常工作,那么管道也可以工作。

答案 1 :(得分:2)

  

我听说过javax.ejb.embeddable.EJBContainer,还有其他选择吗?

EJBContainer API是一个选项。另一个是使用Arquillian(和SchrinkWrap)。

更多链接:

答案 2 :(得分:0)

我不完全确定这是否有助于您的情况,但请查看Smokestack。我个人不在EE空间(Servlet规范之外)工作,但我确实在某一点上看过这个,看起来它可以做你需要的。

答案 3 :(得分:0)

现在有Arquillian,开发人员不再需要摆弄嵌入式Java EE容器了。