Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查集成测试中是否调用了@KafkaListener?_Java_Apache Kafka_Integration Testing_Spring Kafka - Fatal编程技术网

Java 如何检查集成测试中是否调用了@KafkaListener?

Java 如何检查集成测试中是否调用了@KafkaListener?,java,apache-kafka,integration-testing,spring-kafka,Java,Apache Kafka,Integration Testing,Spring Kafka,我想为整个卡夫卡流程编写一个集成测试 在我的生产代码中,我有: @KafkaListener(topics = "myTopic") public void listen(@Payload String payload) { log.debug("processing payload: '{}' ", payload); // business logic here } 在我的测试代码中,我使用kafkaproducerproducer向特定主题发送消息 我想要一个钩子,它可以

我想为整个卡夫卡流程编写一个集成测试

在我的生产代码中,我有:

@KafkaListener(topics = "myTopic")
public void listen(@Payload String payload) {
    log.debug("processing payload: '{}' ", payload);
    // business logic here
}
在我的测试代码中,我使用
kafkaproducerproducer向特定主题发送消息

我想要一个钩子,它可以指示调用了
@KafkaListener
。 我可以在测试中加入一些延迟,但这是一个糟糕的做法,我想避免它


有没有更好的方法等待处理
@KafkaListener

如果您的侦听器调用了某个服务,您可以为该服务注入一个mock并验证它是否被调用

此外,您还可以在测试用例中包装侦听器并添加倒计时锁存器


请参阅示例。

@asolanki测试卡夫卡事件而不是spring应用程序事件我认为@asolanki的观点是可以使用相同的方法。这在单元测试中是典型的,您模拟与外部服务交互的东西。在这种情况下,你嘲笑的将是卡夫卡。然后,在运行测试之后,您断言是否调用了特定的对象,在您的案例中是KafkaListener。但是,在您的示例中,我相信您希望使用真实的卡夫卡环境进行测试。是这样吗?但我不想对它进行单元测试-我想用Testcontainers实例化kafka的完整集成测试。当然,我可以直接作为单元运行我的侦听器,但它将错过集成测试的全部要点