testing - 如何在 Quarkus 测试中禁用 Kafka?

标签 testing apache-kafka quarkus

我的应用程序使用 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 镜像。

另一种解决方案是使用来自 TestContainersKafkaContainer为每次测试运行创建一次性 Kafka 容器。

您可以在 Alex Soto 的 repository 中查看这两个示例.
查看CheckoutProcess类和相应的组件测试和集成测试。

关于testing - 如何在 Quarkus 测试中禁用 Kafka?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60988416/

相关文章:

amazon-web-services - 如何通过 AWS CodeBuild 使用各种构建选项进行测试

spring-boot - Quarkus Jandex 索引无法解析 Artifact org.springframework :spring-web

typescript - fp-ts 和 Jest : ergonomic tests for Option and Either?

Haskell:如何测试使用 wreq 的 Spock 应用程序?

database - JMeter测试运行前如何设置数据库状态?

apache-kafka - 发件箱模式 - 我们如何防止消息中继过程生成重复的消息?

maven - 客户端管理员的 Apache Kafka Maven 包名称

docker - 如何在 docker-compose.yml 中创建 kafka 集群和主题

java - Quarkus HTTPS Restful 服务

cdi - 如何在 QuarkusTestResourceLifecycleManager 实现中注入(inject) bean