【发布时间】:2020-08-04 01:55:45
【问题描述】:
尝试使用自定义 RecordFilterStrategy 对 ConcurrentKafkaListenerContainerFactory 进行单元测试,但无法找到测试过滤器策略的最佳方法。
class ConsumerConfiguration {
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Message> messageListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, Message> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setRecordFilterStrategy(consumerRecord -> consumerRecord.value().getType().contains("MYFILTER"));
return factory;
}
}
单元测试
@Mock
KafkaProperties kafkaProperties;
ConsumerConfiguration configuration;
@Test
void testMessageListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, Message> actual =
configuration.messageListenerContainerFactory();
assertEquals(kafkaProperties.buildConsumerProperties(),
actual.getContainerProperties().getKafkaConsumerProperties());
}
虽然这段代码对单元测试很有用,但是没有提供自定义 RecordFilterStrategy 的代码覆盖,即 lambda 函数,所以如果有人已经为 Kafka Listener Container Factory 完成了单元测试/代码覆盖,那么需要帮助,什么是最好的方法处理。
【问题讨论】:
标签: java spring unit-testing mockito spring-kafka