我正在开发一个Java EE 6应用程序。刚开始时,我正在为EJB类编写测试,方法是手动实例化EJB,然后手动添加通常由依赖项注入提供的成员。随着应用程序变得越来越复杂,我发现这种方法并不能解决问题。因此,我希望能够在测试框架中启动自己的EJB容器,这样它就可以管理我的bean。解决这个问题的最好方法是什么?我听说过javax.ejb.embeddable.EJBContainer,还有别的选择吗?
(我正在使用Glassfish 3,并使用Maven构建,如果这有什么不同的话。)
发布于 2010-09-16 04:55:00
你到底在测试什么?逻辑?配置?您需要直接测试EJB类吗?对于您的测试来说,在运行的容器上充当EJB客户端是否足够?(请记住,没有规则规定自动化单元测试不能要求正在运行的被测系统。)
如果您需要测试的是业务逻辑,请将该代码移动到POJO中并正常测试;然后您不需要测试在容器中运行的POJO,因为容器不应该影响业务逻辑。
在相关的情况下,我从未直接测试过servlet类或Struts控制器类。我肯定会测试这些应用程序所依赖的POJO,并测试最终应用程序(在servlet容器中运行,使用HtmlUnit测试),假设如果最终应用程序工作,那么管道也会工作。
发布于 2010-09-16 07:34:54
我听说过
javax.ejb.embeddable.EJBContainer,还有别的选择吗?
EJBContainer应用编程接口是一种选择。另一种方法是使用Arquillian (和SchrinkWrap)。
更多链接:
发布于 2010-09-16 04:32:05
我不完全确定这是否对你的情况有帮助,但看看Smokestack。我个人并不从事EE领域的工作(在Servlet规范之外),但我确实看过一个关于这方面的演示,看起来它可以做您需要的事情。
https://stackoverflow.com/questions/3721530
复制相似问题