EJB测试策略?

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

(我使用的是Glassfish 3,如果这有什么区别的话,可以和Maven一起构建。)


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

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

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


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

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

更多链接:

  • 使用Arquillian和ShrinkWrap进行真正的Java EE测试(幻灯片+音频)
  • 试用Arquillian和CDI(第2部分)
  • Arquillian in Action; 新功能即将推出

  • 我不完全确定这是否有助于你的情况,但看看烟囱。 我个人不在EE空间中工作(Servlet规范之外),但我确实在某一时刻看到了关于此的演示文稿,并且看起来可以满足您的需求。

    链接地址: http://www.djcxy.com/p/48107.html

    上一篇: EJB testing strategies?

    下一篇: computational geometry