我正在开发 Java EE 6 应用程序。刚开始时,我通过手动实例化 EJB 为我的 EJB 类编写测试,然后手动添加通常由依赖注入(inject)提供的成员。随着应用程序变得越来越复杂,我发现这种方法并不能解决问题。所以我希望能够在测试框架中启动我自己的 EJB 容器,以便它可以管理我的 bean。解决这个问题的最佳方法是什么?我听说过 javax.ejb.embeddable.EJBContainer
,还有其他选择吗?
(我正在使用 Glassfish 3,并使用 Maven 进行构建,如果这有什么不同的话。)
最佳答案
你到底在测试什么?逻辑?配置?您需要直接测试 EJB 类吗?是否足以让您的测试作为针对正在运行的容器的 EJB 客户端? (请记住,没有规则说自动化单元测试不需要正在运行的被测系统。)
如果您需要测试的是业务逻辑,请将该代码移至 POJO 中并正常测试;您不需要再测试在容器中运行的 POJO,因为容器不应影响业务逻辑。
在相关情况下,我从未直接对 servlet 类或 Struts Controller 类进行 JUnit 测试。我绝对测试了它们所依赖的 POJO,并且我测试了最终应用程序(在 servlet 容器中运行,使用 HtmlUnit 进行了测试),假设如果最终应用程序工作正常,那么管道也工作。
关于java - EJB测试策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721530/