如何在Spring多模块项目集成测试中嵌入或模拟kafka

时间:2019-03-11 14:20:24

标签: spring unit-testing spring-boot apache-kafka spring-kafka

亲爱的,我需要在我们正在使用Kafka的项目中的许多资源中添加一些集成测试,但是到目前为止,我无法在所有测试执行中仅运行一个嵌入式Kafka实例或模拟整个Kafka。只是将测试的重点放在我们的代码上,相信集成会很好。

所以我有一些问题:

  1. 设置这些测试的正确/首选方法是什么?要模拟Kafka零件还是要嵌入实例?
  2. 如何嵌入它并在所有测试之间共享该实例,以避免实例被删除并在不需要的情况下重新创建?
  3. 如何模拟所有kafka部件以模拟其正常运行?因此,我可以将测试重点放在我们的代码上,而不是其他方面?

非常感谢您。


我已经尝试过的:

  • 使用@EmbeddedKafka注释需要kafka的测试-它可以工作,但会产生随机错误,因为在某些情况下该实例被删除,并导致其他实例出现FileNotFound

  • 使用@EmbeddedKafka创建一个类,并使用该类扩展测试以使用kafka-结果类似于上述方法

  • 尝试模拟KafkaClient-仍然缺少一些bean或细节-结果:

      

    由以下原因引起:org.springframework.context.ApplicationContextException:   无法启动bean   'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry';   嵌套异常是java.lang.IllegalStateException:找不到group.id   在使用者配置,容器属性或@KafkaListener中   注解;使用组管理时,需要一个group.id。


其他详细信息:

  • 第5单元
  • Gradle

0 个答案:

没有答案