gpt4 book ai didi

java - 多语言堆栈的集成测试(Java/MongoDB/RabbitMQ...)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:37 25 4
gpt4 key购买 nike

我知道 RabbitMQ 是用 Erlang 编写的,因此不能像我们使用 ActiveMQ JMS 代理那样嵌入到 JVM 中。

但实际上有一些项目是用另一种语言完成的,可以很容易地嵌入以进行集成测试。

例如,用 C++ 编写的 MongoDB 可以在 JVM 集成测试的上下文中轻松启动/停止: https://github.com/flapdoodle-oss/embedmongo.flapdoodle.de

也有人将其移植到Java: https://github.com/thiloplanz/jmockmongo/


所以我想知道当我的应用程序是用 Java 编写的,而其他技术是用另一种语言编写的(比如用于 RabbitMQ 的 Erlang)时,我们如何进行集成测试?

一般来说,好的做法是什么?

我看到了 3 个主要的解决方案:

  • 开始一个真正的 RabbitMQ
  • 在当前使用的语言中嵌入该技术的 JVM 端口
  • 使用标准技术,使 Erlang 中的一项技术与 Java 中的另一项技术(RabbitMQ/Qpid/StormMQ 实现 AMQP)具有相同的行为和通信层

是否有 Maven/Sbt/Ant 插件来启动临时 RabbitMQ 代理?在测试课之前有任何支持 Junit/TestNG RabbitMQ 的项目吗?

我看到在 Java 中有一个 AMQP 的开源实现:Apache Qpid在生产中有 RabbitMQ 时,有人有使用此实现进行集成测试的经验吗?有可能吗?我正在使用 Spring Integration。


顺便说一下,我刚刚注意到 Spring-AMQP 项目在其 github 自述文件中提到:

Many of the "integration" tests here require a running RabbitMQ server - they will be skipped if the broker is not detected.

最佳答案

如果是我,我会考虑模拟有问题的堆栈组件。 What's the best mock framework for Java? (虽然不是一个很好的 Stack Overflow 问题)和 Mock Object可能会帮助您前进。

与尝试“实时测试”所有内容相比,模拟组件使测试更容易(恕我直言)。

关于java - 多语言堆栈的集成测试(Java/MongoDB/RabbitMQ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15204051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com