【问题标题】:Unit testing DAO tier with FUSE ESB使用 FUSE ESB 对 DAO 层进行单元测试
【发布时间】:2013-08-15 08:11:31
【问题描述】:

我们正在使用 Fuse ESB(Camel、OSGi、蓝图)处理一些峰值,以交付一些组件。我们的 EA 有一个强加的架构,即:REST 控制器使用路由来调用 CXF WS。这会将本地 java 类作为服务调用,例如,执行 CRUD 操作。这些使用启用 JPA 的 DAO/实体。一切似乎在设计而不是现实世界中都有点学术,但那是另一个故事。

问题是关于测试的。通常我实际上会使用 H2 来测试这个服务层来提供 DB,将 DAO、entityManager 等与 spring 连接在一起(我知道有些人不会这样做,但我会这样做,请耐心等待)。但我们将使用蓝图进行熔断。如何对这一层进行单元测试?让我的测试子类 CamelBlueprintTestSupport 不起作用,这需要一条路线。不能使用 SpringJUnit4ClassRunner(尽管目前确实可以使用它)因为它与弹簧连接,当在容器中运行时,我们将与蓝图连接。

那么我们如何进行单元测试呢?如何在基于蓝图的单元测试中实例化这组类?我们可以吗?

【问题讨论】:

    标签: jpa dao fuseesb blueprint-osgi


    【解决方案1】:

    您可以尝试的一种方法是使用pax exam。它允许在完整的 OSGi 环境中运行测试。因此,您可以以黑盒方式安装您的真实捆绑包测试它。

    【讨论】:

    • 猜猜我试图避免一个完整的环境。我实际上有这个与spring一起工作,但没有使用注释。这意味着没有向类中添加 spring 代码,所以我只能将 spring 作为测试 dep。似乎工作。还是谢谢
    【解决方案2】:

    您可以使用 pojosr,这是 camel-test-blueprint 正在使用的:https://code.google.com/p/pojosr/

    虽然 pojosr 不是一个完整的 OSGi 环境,所以你可以做的会有一些限制。

    对于camel-test-blueprint,你可能可以重写方法isUseRouteBuilder并返回false,那么它不应该期待一个路由。

    【讨论】:

    • 我会看一下库,但覆盖似乎没有效果。无论如何,谢谢 - 至少在这里得到了一些回应,在专门的保险丝论坛上对这个询问没有任何反应......
    • FuseSource 已被 Red Hat 收购,因此请使用旧 fusesource 网站上也提到的 Red Hat JBoss 论坛。
    猜你喜欢
    • 2021-03-15
    • 2016-03-15
    • 2019-11-15
    • 2012-05-14
    • 1970-01-01
    • 2020-01-17
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多