Так что я использую этот пример Embedded Kafka и это тоже
Я немного изменил этот пример и обновил слушатель kafka с некоторой базой данных (например, h2db).
Теперь в моем модульном тесте, когда я хочу проверить, доступны ли данные в БД или нет, я получаю NULL.Также я не уверен, как проверить БД вручную, так как h2 является базой данных БД.
Вот обновленная часть: в классе приемника
@Autowired
DataTableRepository repository;
@KafkaListener(topics = "${kafkatest.topic}")
public void receive(ConsumerRecord<String, DataTable> consumerRecord) {
LOGGER.info("received payload='{}'", consumerRecord.toString());
repository.save(consumerRecord.value());
latch.countDown();
}
И в модульном тесте:
@Autowired
DataTableRepository repository;
@Test
public void testReceive() throws Exception {
DataTable table = new DataTable(1, "Sending with default template");
template.send(topic, table);
receiver.getLatch().await(10000, TimeUnit.MILLISECONDS);
DataTable dt = repository.getOne(table.getId());
assertNotNull(dt);
assertThat(receiver.getLatch().getCount(), equalTo(0L));
}
Но dt всегда становится нулевым.Также я не могу проверить базу данных, так как она останавливается после остановки теста.У кого-нибудь есть идеи, как сделать это работоспособным?