【问题标题】:Testing EJB 3.1 applications with Embedded containers使用嵌入式容器测试 EJB 3.1 应用程序
【发布时间】:2011-12-13 13:34:58
【问题描述】:

是否可以在将 bean 或 bean 方法(或单元)部署到嵌入式容器后调用测试作为“单元测试”。 IMO,我觉得这是可能的,因为,

  1. 我们仍将只测试单个单元,可能是单个 EJB 或其方法,它不依赖于来自任何其他开发人员的任何其他应用程序代码。但是,它当然会从嵌入式容器中获取服务。
  2. 恕我直言,我们可以认为这些嵌入式容器只是提供一些服务的几个 jar,就像 JRE 提供一个普通的 java SE 应用程序一样。因此,如果我们考虑将 Java SE 类或 JRE 中的方法测试为单元测试,那么我想我们也可以将上述场景称为单元测试。

我同意关于这个话题有很多可以辩论的地方,我也同意我上面提到的可能不正确。所以我想听听大家的意见,如果我的想法是正确的,或者我是否遗漏了一些观点。据我所知,单元测试没有单一而可靠的定义。如果有的话,请给我一些指点,对我有很大的帮助。

非常感谢您的支持。 - 甘尼萨...

【问题讨论】:

    标签: unit-testing ejb ejb-3.0 ejb-3.1


    【解决方案1】:

    我认为答案完全取决于你在测试中做了什么。

    根据单元测试的定义,(it) is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application。如果您需要一个嵌入式容器来测试最小的代码单元,那么是的,它就是单元测试。

    我的一个例子是使用 Hypersonic DB 进行 DAO 测试。如果没有内存数据库(据我所知),就无法测试 JPA 查询,它们是 DAO 方法代码的最小部分。

    但是,如果您使用嵌入式容器来测试 EJB 方法并且它们与其他注入的 EJB 或 POJO 协作(例如通过 CDI),那么我会考虑这种集成测试。您现在不是在测试最小的代码,而是在测试其他东西(其他协作 EJB 或 POJO),您需要模拟协作者以真正测试 EJB 的最小代码块。

    【讨论】:

    • 在我的例子中,我的 EJB 不会与其他 EJB 协作,而只会使用容器提供的服务。例如,我的 EJB 将使用已配置的消息队列、目的地、安全相关配置等,以确保它们在部署到容器中时不会中断。当然,我打算分2个级别来处理它。首先,只需模拟所有内容并仅测试该单元。在第二级,我想先测试一下我的单元是否可以在嵌入式容器上工作,然后再将其与其他应用程序代码集成。
    • 在这种情况下,根据你的说法,我们可以称之为单元测试。我说的对吗?
    • 您的二级测试我认为它是集成测试。您已经进行了单元测试,以确保小块代码是正确的。您的“二级”测试更倾向于确保配置正常 - 我不愿意将任何配置测试作为我的单元测试套件的一部分。
    • 啊,好吧。感谢您对此的投入:-)
    猜你喜欢
    • 2015-07-22
    • 2011-04-25
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2013-04-04
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多