Как создать запись потребителя Kafka из строки для построения тестового примера Junit - PullRequest
0 голосов
/ 01 мая 2018

Мне нужна помощь в создании тестового примера Junit для моего потребителя Java-кафки.

Исходный код My Original имеет метод, описанный ниже, и для него необходимо создать тестовый блок.

public void processConsumerRecord(ConsumerRecords<String, GenericRecord> records, boolean isEventProcessed, boolean isOffsetCommitted,
                                  int totalErrorCountFromSinkService, int totalErrorCount, Consumer<String, GenericRecord> consumer) {

...... }

Мой потребитель Kafka получает сообщения из темы kafka, и мне нужно иметь возможность предоставить входящее сообщение в формате ConsumerRecords, но в рамках модульного теста я не опрашиваю сообщение от kafka, а вместо этого высмеиваю сообщение из оригинальной kafka тему и предоставление статического входного сообщения в блок тестового примера, который тестирует вышеуказанный метод, как показано. Как создать смоделированное входное сообщение в виде ConsumerRecords ?

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете создать ConsumerRecord вместо насмешки, как показано ниже -

    Map<TopicPartition, List<ConsumerRecord<Integer, String>>> records = new LinkedHashMap<>();

    String topic = "topic";
    records.put(new TopicPartition(topic, 0), new ArrayList<ConsumerRecord<Integer, String>>());
    ConsumerRecord<Integer, String> record1 = new ConsumerRecord<>(topic, 1, 0, 0L, TimestampType.CREATE_TIME, 0L, 0, 0, 1, "value1");
    ConsumerRecord<Integer, String> record2 = new ConsumerRecord<>(topic, 1, 1, 0L, TimestampType.CREATE_TIME, 0L, 0, 0, 2, "value2");
    records.put(new TopicPartition(topic, 1), Arrays.asList(record1, record2));
    records.put(new TopicPartition(topic, 2), new ArrayList<ConsumerRecord<Integer, String>>());

    ConsumerRecords<Integer, String> consumerRecords = new ConsumerRecords<>(records);
...