我的应用程序使用 Kafka 和 Hibernate。对于 Kafka,需要一个正在运行的 docker 镜像。如果我为 Hibernate 运行 Quarkus 测试,如果 Kafka 没有运行,测试将失败。在我的 IDE 中这不是问题,但在 Jenkins 中没有可用的 Kafka 服务器并且测试失败,因为它无法解析 Kafka 服务器。
是否可以在 Quarkus 测试中禁用 Kafka?
最佳答案
您可以使用 Microprofile 的 Emitter
向 Kafka channel 发送消息:
@Inject
@Channel("hello")
Emitter<String> emitter;
默认情况下,如果该发射器后面没有 Kafka,它将创建一个内存中消息总线。因此不需要 Kafka 的 docker 镜像。
另一种解决方案是使用来自 TestContainers 的 KafkaContainer
为每次测试运行创建一次性 Kafka 容器。
您可以在 Alex Soto 的 repository 中查看这两个示例.
查看CheckoutProcess
类和相应的组件测试和集成测试。
关于testing - 如何在 Quarkus 测试中禁用 Kafka?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60988416/