2013-12-18 45 views
5

我正在使用EJB 3.0,Oracle WebLogic。我如何测试EJB 3.0?

需要帮助的以下问题:

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

谢谢。

回答

6

一个选项是使用嵌入式容器。在每次执行测试时开始,您必须通过jndi查找来获取bean,自己管理容器的配置以及各种无聊,非生产性的东西。

另一方面,有像Arquillian这样的框架,为你做的事情。它在测试中支持@EJB这样的注释,并且支持DI,管理容器....在他们的网站上阅读指南,它的价值。根据我的经验,对于复杂的ejb测试来说,mock是一个不好的解决方案,尽管它可能用于测试一些非容器相关的功能。

我的建议与arquillian一起进行。

+0

这是一个好主意。我听说过Arquillian,但不知道它可以用于EJB测试。谢谢 – john

+1

Gosh是的,它可以测试EJB - http://arquillian.org/guides/getting_started_rinse_and_repeat/ – HankCa

1

用于junit测试的嵌入式EJB容器是集成测试ejbs服务的好主意。

使用open-ejb(或任何其他嵌入式容器,如glassfish等)可帮助您使用junit作为框架简单编写小型测试。即使使用内存数据库,JPA也很好地集成在一起。

如果说到嘲笑,让我们说远程服务,你可能仍然使用mockito里面。

找到一些记录&运行的例子在这里:https://tomee.apache.org/examples-trunk/

+0

测试的具体示例的链接将比TomEE能够处理的每个事件的示例列表更好。 – meustrus

2

我会尝试使用纯JUnit和的Mockito尽可能测试代码的小户型和使用嵌入容器只集成测试,因为这些类型的测试作为简单的单元测试运行时间更长。而对于运行单元测试的开发人员来说,绝对不应该感到烦恼。