Поэтому мне нужно создать интеграционный тест для моего метода kafkalistener, в котором тест ожидает, что фактически возникнет исключение ListenerExecutionFailedException, так как сообщение не было выполнено во время потребления из-за неактивности другой службы.
Ниже приведен код теста, где я использую Embedkafkabroker для производителя и потребителя:
@Test(expected = ListenerExecutionFailedException.class)
public void shouldThrowException() {
RecordHeaders recordHeaders = new RecordHeaders();
recordHeaders.add(new RecordHeader("messageType", "bootstrap".getBytes()));
recordHeaders.add(new RecordHeader("userId", "123".getBytes()));
recordHeaders.add(new RecordHeader("applicationId", "1234".getBytes()));
recordHeaders.add(new RecordHeader("correlationId", UUID.randomUUID().toString().getBytes()));
ProducerRecord<String, String> producerRecord = new ProducerRecord<>(
"TEST_TOPIC",
1,
null,
"message",
"",
recordHeaders);
producer.send(producerRecord);
consumer.subscribe(Collections.singleton("TEST_TOPIC"));
consumer.poll(Duration.ofSeconds(2));
}
Мне интересно, что исключение считалось не сгенерированным, и тест не пройден, хотя я знаю, что сообщение действительно получено слушателем и исключением был брошен с тех пор, как я увидел их в журнале.
И хотя я изменил ожидаемое на Throwable, исключение, похоже, не обнаружено.
Что я должен сделать, чтобы исключение было обнаружено Junit?
Кроме того, еще одна интересная вещь заключается в том, что я попытался смоделировать класс обслуживания, который был вызван в слушателе, и вернуть некоторый фиктивный файл. значение, но служба не вызывается, когда я использовал Mockito.verify