如何测试(集成测试)springboot-kafka 微服务

Posted

技术标签:

【中文标题】如何测试(集成测试)springboot-kafka 微服务【英文标题】:How to test(Integration tests) springboot-kafka microservices 【发布时间】:2019-11-02 10:49:36 【问题描述】:

我有如图所示的 Spring-boot Kafka pub sub microservices。我想为我的每个应用程序进行集成测试。

UseCase1: SpringBoot-App-c 其中consumesTopic X处理它和producesTopic Y

UseCase2: SpringBoot-App-b 只是从Topic X 消费并处理它

预期: 在我的测试中,我想向Topic X(用于Springboot-app-c)发布一条消息,该消息应该由Spring-Boot-App-C处理并生成到Topic Y,我想要确认该特定消息是否针对主题 Y 生成。

缺点:当我向主题 X 发送消息时,该消息是针对 Springboot-app-cSpringboot-app-c, springboot-app-b and spring-boot-app-d 的。当我尝试测试一个应用程序时,它在不知不觉中测试了三个应用程序,我希望对其进行更多控制。我希望测试消息仅由spring-boot-app-c 接收。如何使其特定于应用程序并单独测试每个应用程序

如何知道某事已发布到主题 Y 如何让主题 X 中只有一个且正确的消费者用于该特定应用的测试消息

【问题讨论】:

【参考方案1】:

如何知道某事已发布到主题 Y

将消费者添加到主题 Y 的测试中,以验证您收到了预期的数据。

如何让主题 X 中只有一个正确的消费者用于该特定应用的测试消息

你不能; Kafka 中没有用于条件路由或消息选择的机制。所有消费者组都会获得该消息的副本。

您必须使用单独的主题。

【讨论】:

以上是关于如何测试(集成测试)springboot-kafka 微服务的主要内容,如果未能解决你的问题,请参考以下文章

使用Mybatis和不同DB进行集成测试开发时如何做集成测试

如何在 pytest 中保持单元测试和集成测试分开

如何:针对测试环境(数据库)运行 Maven 集成测试

Spring Boot 集成测试。如何测试“删除”方法?

如何使用注释在 testng + maven 中分离单元测试和集成测试?

如何在 maven 的集成测试目标中运行单个测试