我想使用JUnit测试企业java bean(以后应该部署到JBoss服务器)。但我并不完全知道我可以使用的工具。普通的JUnit因为缺少EJB容器而失败,导致缺少所需的注入。
谷歌搜索引导我到一个名为JBoss EJB嵌入式容器的库,但它似乎已经过时了。我也找不到任何要下载的源文件或二进制文件。那么请大家帮忙,在本地生成一个能够在企业bean上运行JUnit测试的“模拟”容器的简单方法是什么?
问候 本
答案 0 :(得分:3)
我建议你看一下Arquillian:
Arquillian使您可以在远程或嵌入式容器中测试业务逻辑。或者,它可以将存档部署到容器,以便测试可以作为远程客户端进行交互。
仍然活着Embedded JBoss AS。 Seam Framework还提供了一个带有嵌入式JBoss的测试环境,可以运行应用程序的组件测试(使用TestNG)。
答案 1 :(得分:2)
openEJB是一个嵌入式EJB容器,非常适合单元测试EJB。您可以在普通的应用服务器之外测试它们。而且,它很快!而且,它快速旋转!而且,它有一个Eclipse插件,便于管理!一定要喜欢它!它已经存在了一段时间,有很多关于如何设置和使用它的教程,所以你应该没有问题。
答案 2 :(得分:1)
您可以在JUnit程序中使用EJB远程客户端来测试EJB。唯一的缺点是您必须在测试期间运行Application Server。
查看this blog entry以获取有关如何远程调用EJB的示例。
答案 3 :(得分:1)
已经有一段时间了,但我总是将我的EJB编写为POJO的简单包装器。接口将定义方法,POJO和EJB(当然是会话)都将实现该接口。
我可以在没有任何容器问题的情况下全面测试POJO的“业务逻辑”。然后如果我让服务器运行,我可以对会话bean运行相同的测试,只需通过测试客户端而不是POJO ......
答案 4 :(得分:0)
由于我在DAO(ORM界面)测试中完全不需要JNDI 内容(例如Cannot instantiate class: org.jnp.interfaces.NamingContextFactory),这对我来说已经足够了
<jta-data-source>...</jta-data-source>
persistence.xml
部分
Persistence.createEntityManagerFactory( "my-persistence-unit-name" )