【问题标题】:How to easily test a EJB using JUnit如何使用 JUnit 轻松测试 EJB
【发布时间】:2010-11-03 19:37:29
【问题描述】:

我想使用 JUnit 测试一个企业 Java bean(稍后应该部署到 JBoss 服务器)。但我不完全知道我可以使用哪些工具。由于缺少 EJB 容器和导致缺少所需的注入,普通 JUnit 失败。

谷歌搜索一下,我找到了一个名为 JBoss EJB 嵌入式容器的库,但它似乎已经过时了。我也找不到任何要下载的源文件或二进制文件。

所以请帮忙,有什么简单的方法可以在本地生成能够在企业 bean 上运行 JUnit 测试的“模拟”容器?

问候 本

【问题讨论】:

    标签: jboss junit ejb


    【解决方案1】:

    建议你看看Arquillian:

    Arquillian 使您能够在远程或嵌入式容器中测试您的业务逻辑。或者,它可以将存档部署到容器中,以便测试可以作为远程客户端进行交互。

    还有一个活着的Embedded JBoss AS。 Seam Framework 还提供了一个带有嵌入式 JBoss 的测试环境,用于运行应用程序的组件测试(使用 TestNG)。

    【讨论】:

      【解决方案2】:

      openEJB 是一个嵌入式 EJB 容器,非常适合对 EJB 进行单元测试。你可以在你的普通应用服务器之外测试它们。而且,速度很快!而且,它旋转得很快!而且,它有一个易于管理的 Eclipse 插件!必须爱它!它已经存在了一段时间,有很多关于如何设置和使用它的教程,所以你应该没有问题。

      【讨论】:

        【解决方案3】:

        您可以在您的 JUnit 程序中使用 EJB 远程客户端来测试您的 EJB。唯一的缺点是在测试期间您必须有一个正在运行的应用程序服务器。

        查看this blog entry 获取有关如何远程调用 EJB 的示例。

        【讨论】:

          【解决方案4】:

          已经有一段时间了,但我总是将我的 EJB 编写为 POJO 的简单包装器。接口将定义方法,POJO 和 EJB(当然是会话)都将实现该接口。

          我可以完全测试 POJO 的“业务逻辑”,而不会出现任何容器问题。然后如果我让服务器运行,我可以对会话 bean 运行相同的测试,只需对客户端而不是 POJO 进行测试......

          【讨论】:

            【解决方案5】:

            因为我在 DAO(ORM 接口)测试中完全不需要 JNDI 的东西(例如 Cannot instantiate class: org.jnp.interfaces.NamingContextFactory),所以对我来说就足够了

            • 在类路径中包含休眠 jars
            • 在我的 persistence.xml 中删除/注释掉<jta-data-source>...</jta-data-source> 部分
            • 使用Persistence.createEntityManagerFactory( "my-persistence-unit-name" )注入/分配您自己的entitymanagerfactory

            【讨论】:

              猜你喜欢
              • 2011-09-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多