OSGI容器中func的集成测试

Posted

技术标签:

【中文标题】OSGI容器中func的集成测试【英文标题】:Integration testing of func in OSGI container 【发布时间】:2013-02-06 15:22:56 【问题描述】:

我正在使用 FuseESB 运行我的应用程序,它本质上是 OSGI 容器 (Felix),我想找到在集成模式下测试我的 OSGI 服务的方法(包括外部依赖项,如 DB、外部服务等)。首先想到的是能够将特定包运行到容器中,该容器涉及所有应用程序服务到运行此包中定义的测试。有人可以帮助解决这类问题吗?谢谢!

【问题讨论】:

【参考方案1】:

有不同的测试方法。 由于 FuseESB 基于 Apache Karaf,您可以使用 apache karaf-pax-exam 工具进行测试,以自动测试完整的容器设置。 在 OSGi 容器中测试 OSGi 包的另一种方法是直接使用 pax-exam。最后但并非最不重要的一点是,如果您只是想测试您可能会使用 pojosr 测试的服务查找功能,它非常适合测试,但它有局限性,尤其是在您依赖容器功能的情况下。 也就是说,您可以在以下页面找到信息:

Pax-Exam

Apache Karaf

sample how Pax-Web uses pax-exam in its iTests

【讨论】:

对测试选项 Achim 的精彩总结。在这种情况下,我倾向于使用 karaf 考试,因为测试听起来需要很多基础设施。【参考方案2】:

您可能会发现http://www.javabeat.net/2011/11/how-to-test-osgi-applications/ 对各种 OSGi 测试选项的概述很有帮助。配置 PAX-Exam 以拉入您的整个 FuseESB 容器并让您的所有应用程序服务存在将涉及某些挑战,但是一旦您掌握了诀窍,它就会非常方便。

【讨论】:

这就是 pax-exam-karaf 的强大之处,它是一个“预配置”设置,可以轻松使用 karaf :)【参考方案3】:

bndtools 作为在容器内进行 JUnit 测试的可能性。

【讨论】:

以上是关于OSGI容器中func的集成测试的主要内容,如果未能解决你的问题,请参考以下文章

Java Web应用集成OSGI

在 JUnit 测试的上下文中使用 OSGi 声明式服务

Flyway 与 JPA + OSGi 的集成

使用 Jest 对 Relay 容器的集成测试与工作中的 GraphQL 后端不工作

使用 Jest 对 Relay 容器的集成测试与工作中的 GraphQL 后端不工作

java单元/集成测试中使用Testcontainers