当前位置: 首页 > 知识库问答 >
问题:

Spring启动嵌入式Kafka h2 数据库单元测试

谷梁云瀚
2023-03-14

所以我用了这个嵌入Kafka的例子,还有这个

我对这个示例做了一点更改,并用一些数据库(如h2db)更新了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 始终为空。此外,我也无法检查数据库,因为它在测试停止后停止。有人知道如何使它可行吗?

共有1个答案

井兴怀
2023-03-14

是否已在测试属性文件中设置属性“Kafka测试主题”?这可能是您的侦听器未侦听指定主题的原因。

 类似资料:
  • 我需要启动一个嵌入式cassandra实例,通过单元测试在cassandra键空间上执行一些操作。编程语言是Java。启动嵌入式cassandra有哪些选项? 我使用了mojo maven插件,但是在使用以下命令启动实例之后,我没有看到cassandra实例在localhost上的默认端口9042启动。插件:http://www.mojohaus.org/cassandra-maven-plugi

  • 由于以下配置,我希望在web浏览器中查看Spring启动的H2数据库的内容: 我在日志中搜索了JDBC URL: 这样我就可以按照以下方式填写连接表单: 你知道吗? 谢了!

  • 我有一个简单的Spring启动Web应用程序,它从数据库中读取并返回JSON响应。我有以下测试配置: 我有一个数据源 Bean,它是在应用程序的主配置中配置的。当我运行测试时,Spring 尝试加载上下文并失败,因为数据源取自 JNDI。一般来说,我想避免为此测试创建数据源,因为我有模拟的存储库。 是否可以在运行单元测试时跳过数据源的创建? 在内存中测试数据库不是一个选项,因为我的数据库创建脚本具

  • 我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/

  • 问题内容: 由于以下配置,我想在Web浏览器中查看Spring启动的H2数据库的内容: 我在日志中搜索了JDBC URL: 但是不幸的是,数据库仍然是空的,但是由于populateDB.sql脚本,它不应该是空的。 任何想法? 谢谢! 问题答案: 本文向大家介绍查看Spring启动的嵌入式H2数据库的内容相关面试题,主要包含被问及查看Spring启动的嵌入式H2数据库的内容时的应答技巧和注意事项,