apache-kafka Kafka Consumer在Sping Boot 中抛出测试异常

bkkx9g8r  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(118)

我有以下配置

server:
  port: 8001
spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      auto-offset-reset: latest
      group-id: group-id
      value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
      key-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
      properties:
        spring.deserializer.key.delegate.class: org.apache.kafka.common.serialization.StringDeserializer
        spring.deserializer.value.delegate.class: <package..>.config.kafka.KafkaEventDeserializer
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: <package..>.config.kafka.KafkaEventSerializer

kafka:
   topic-name: topic-name
   group-id: group-id

我想测试下面的Kafka消费者

@KafkaListener(topics = "#{'${kafka.topic}'}",
               groupId = "#{'${kafka.group-id}'}")
public void consumeEvents(Event event) throws RuntimeException {
      throw new RuntimeException("EventType does not match !");
}

这是我的测试案例

@Test
@SneakyThrows
void consumeEvents_RuntimeExceptionShouldBeThrown() {

    ...
    await().atMost(2, TimeUnit.SECONDS)
           .untilAsserted(() -> assertThrows(RuntimeException.class, () -> kafkaTemplate.send(receiptTopic, "key", event)));

}

测试失败时抛出异常!
似乎已经捕获了异常,因此assertThrows无法正常工作
这种情况怎么处理?谢谢

zvokhttg

zvokhttg1#

你不需要制作人来测试

// TODO: get consumer service instance 
final Event event = new Event();
assertThrows(RuntimeException.class, 
    () -> service.consumeEvents(event));

相关问题