Рубрики
Без рубрики

Совет по тестированию потоков Кафки: понимание исключения “Неинициализированная тема”

В одном из моих предыдущих постов в блоге обсуждалось тестирование приложения Kafka Streams. Вот соответствующий совет, который… С пометкой кафка, тестирование, java, показать разработчика.

В одном из моих предыдущих постов в блоге обсуждалось тестирование приложения Kafka Streams. Вот соответствующий совет, который может пригодиться!

Во время тестирования вы можете столкнуться с java.util. Исключение NoSuchElementException: Неинициализированная тема исключение. Скорее всего, это связано с тем, что вы вызвали Тема вывода теста.Значение чтения (например, как часть проверки утверждения ). Проблема заключается не в самом исключении, а в сообщении об ошибке Неинициализированная тема которая может сбивать с толку. Исключение, скорее всего, появится, если ваша обработка Топология работала не так, как ожидалось, и в теме не было записи ( Тема вывода теста ) вы пытались читать с.

Рассмотрим этот пример:

TestInputTopic inputTopic = ...;
TestOutputTopic outputTopic = ...;

inputTopic.pipeInput("foo", "bar");
assertThat(outputTopic.readValue(), equalTo("foobar"));

Чтобы избежать путаницы, вам следует подтвердить, является ли тема вывода пустой – как до, так и (необязательно) после проверки значения, напр.

assertThat("output topic was empty",outputTopic.isEmpty(), is(false));
inputTopic.pipeInput("foo", "bar");
assertThat(outputTopic.readValue(), equalTo("BAR"));
assertThat("output topic was not empty",outputTopic.isEmpty(), is(true));

Обладающий Утверждаю, что (с соответствующим сообщением об ошибке) перед утверждением инг вывод темы.readValue() гарантирует, что вы получите ответ об ошибке, который вы можете понять. Что-то похожее на:

testCase1(foo.bar.AppTest)  Time elapsed: 0.066 sec  <<< FAILURE!
java.lang.AssertionError: output topic was empty
Expected: is 
     but: was 
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
    at org.junit.Assert.assertThat(Assert.java:956)
    at com.foo.bar.AppTest.testCase1(AppTest.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Сейчас тема вывода была пустой имеет смысл .. по крайней мере, для меня!

Если вас интересуют потоки Кафки, ознакомьтесь с некоторыми из моих предыдущих блогов! Будем рады получить ваши отзывы через Твиттер или просто оставьте комментарий 🙏🏻

Оригинал: “https://dev.to/itnext/kafka-streams-testing-tip-making-sense-of-uninitialized-topic-exception-47d8”