EJB测试策略?

Mik*_*zak 7 java ejb glassfish java-ee java-ee-6

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

(我正在使用Glassfish 3,并使用Maven构建,如果这有任何区别.)

Rod*_*zel 2

你到底在测试什么?逻辑?配置?您需要直接测试 EJB 类吗?对于正在运行的容器,您的测试充当 EJB 客户端就足够了吗?(请记住,没有规则说自动化单元测试不能要求正在运行的被测系统。)

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

在相关情况下,我从未直接对 servlet 类或 Struts 控制器类进行 JUnit 测试。我肯定会测试它们所依赖的 POJO,并测试最终应用程序(在 servlet 容器中运行,使用 HtmlUnit 进行测试),假设如果最终应用程序工作,那么管道也工作。

  • “请记住,没有规则说自动化单元测试不能要求正在运行的被测系统”好吧,实际上,有规则,并且根据定义,此类测试不是单元测试:) (4认同)