如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询

Posted

技术标签:

【中文标题】如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询【英文标题】:How to connect to HSQLDB in-memory in Spring Boot tests to make a query 【发布时间】:2020-08-04 06:40:19 【问题描述】:

我有一个带有 mysql db 的 Spring Boot 应用程序,但是 在运行测试时使用了 HSQLDB是否可以连接到这个内存数据库来执行查询? 我必须在测试/应用程序中更改什么才能运行它?我已经尝试运行 hsql 数据库管理器并连接到该数据库,但它似乎是空的,但实际上它不是空的,因为在应用程序中我正在调试代码并从该数据库读取数据。

【问题讨论】:

你在使用 SpringDataJpaTest 吗? 我正在使用 Spring Data JPa,但我不确定我是否正在使用 SpringDataJpaTest... 我有与 spring 上下文的集成测试。 然后你做了一个提交? 这不应该被关闭。了解此设置的人很清楚这个问题,答案是将 HSQLDB 作为服务于内存数据库的服务器运行。 【参考方案1】:

你有两个选择。

一种选择是在 Spring 中启动 HyperSQL (HSQLDB) 服务器。此选项在答案How to start HSQLDB in server mode from Spring boot application 中进行了讨论,然后在单独的 Java 进程中启动 HyperSQL DatabaseManagerSwing 并使用 URL:jdbc:hsqldb:hsql://localhost/testdb 连接到 HyperSQL Server。

另一种选择是在 Spring 中启动 HyperSQL DatabaseManagreSwing。您可以修改为 Server 提供的 bean 模板并启动 org.hsqldb.util.DatabaseManagerSwing 而不是 Server。在这种情况下,DatabaseManager 应该连接到 URL:jdbc:hsqldb:mem:testdb

注意,在这两种情况下,您都需要指定jdbc:hsqldb:mem:testdb URL 作为 Spring 数据源。

【讨论】:

以上是关于如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Spring Boot 应用程序中连接到 MongoDB

在没有xml的spring boot中连接到mysql数据源

如何在 Cypress 测试中连接到 SFTP 服务器?

从 Spring Boot 连接到 Heroku Postgres

Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql

在 Spring JPA 中连接到两个不同的数据库失败