春季启动+嵌入式Kafka + H2数据库+单元测试

时间:2019-02-12 10:29:12

标签: java spring-boot junit apache-kafka h2

所以我正在使用此示例Embedded Kafkathis too

我已经稍微修改了此示例,并使用某些数据库(例如h2 db)更新了kafka侦听器。

现在在单元测试中,当我想检查数据库中的数据是否可用时,我将得到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总是为空。我也不能检查数据库,因为它在测试停止后就停止了。 有人知道如何使它可行吗?

0 个答案:

没有答案