Unit testing 如何测试EJB3.0?

Unit testing 如何测试EJB3.0?,unit-testing,jakarta-ee,ejb,integration-testing,Unit Testing,Jakarta Ee,Ejb,Integration Testing,我使用的是EJB3.0,Oracle WebLogic 需要以下问题的帮助: 如何测试EJB(3.0)?我指的是单元测试和/或集成测试?我可以使用某种嵌入式EJB容器或创建一个模拟来编写单元测试吗?也许有一些特殊的测试框架或方法?EJB对我来说并不新鲜,但我从未为它们编写过测试。 任何信息都对我有用 谢谢。一个选项是使用嵌入式容器。在每次测试执行时启动,您必须通过jndi查找获取bean,自己管理容器的配置,以及所有无聊、低效的东西 另一方面,有一些框架,比如,为您做这件事。它在测试中支持@EJ

我使用的是EJB3.0,Oracle WebLogic

需要以下问题的帮助:

如何测试EJB(3.0)?我指的是单元测试和/或集成测试?我可以使用某种嵌入式EJB容器或创建一个模拟来编写单元测试吗?也许有一些特殊的测试框架或方法?EJB对我来说并不新鲜,但我从未为它们编写过测试。 任何信息都对我有用


谢谢。

一个选项是使用嵌入式容器。在每次测试执行时启动,您必须通过jndi查找获取bean,自己管理容器的配置,以及所有无聊、低效的东西

另一方面,有一些框架,比如,为您做这件事。它在测试中支持@EJB之类的注释,并执行DI、管理容器。。。。阅读他们网站上的指南,这是值得的

根据我的经验,mock对于复杂的ejb测试来说不是一个好的解决方案,即使它可以用于测试一些不依赖于容器的功能


我的建议是使用arquillian。

junit测试中使用的嵌入式EJB容器是集成测试您的服务和EJB的好主意

使用开放ejb(或任何其他嵌入式容器,如glassfish等)可以帮助您使用junit作为框架编写简单的小型测试。甚至JPA也使用内存数据库进行了很好的集成

如果涉及到mocking,比如说对于远程服务,您仍然可以在内部使用mockito


在这里可以找到一些文档化且可运行的示例:

我会尽可能多地使用普通junit和mockito来测试小的代码单元,并且只在集成测试中使用嵌入式容器,因为这类测试作为简单的单元测试运行的时间要长得多。对于运行单元测试的开发人员来说,永远不会让人讨厌。

这是个好主意。我听说过Arquillian,但不知道它可以用于EJB测试。ThanksGosh是的,它可以测试EJB——一个指向特定测试示例的链接比一个TomEE所能做的每件事的示例列表要好。