如何使用PostgreSQL作为内存中的SGBD(类似于HYPERSONIC)进行单元测试



在运行测试时,我正在尝试将PostgreSQL与Spring,Maven和Hibernate一起使用作为内存中的SGBD。

我得到的错误是数据库不存在。

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: database "test" does not exist)

有没有办法指定PostgreSQL通过休眠在内存中创建自己的表,或者给它一个SQL查询来构建数据库?

以下是我与HYPERSONIC_IN_MEMORY一起使用并且工作正常的一些属性,如何将这些属性应用于PostgreSQL?

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
    <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

这是我第一次使用PostgreSQL,任何帮助将不胜感激。

如果你连接到一个不存在的数据库,你似乎希望PostgreSQL创建一个数据库。它不支持这样做。

是的,您可以"向它提供将构建数据库的 sql 查询"......但是,您需要连接到数据库才能发出相应的CREATE DATABASE命令。

尝试在单元测试框架中使用预类或脚本与 PostgreSQL 建立 JDBC 连接并创建测试数据库。或者请求将其作为单元测试框架的功能,或作为 Hibernate 的功能请求。请参阅此论坛帖子以进行事先讨论。

一般建议是让ORM更新现有模式,而不是创建新模式,或者使用预测试代码删除并重新创建DB。

至于"在RAM中"部分...如果这是一个速度问题,请参阅优化PostgreSQL以进行快速测试。

相关内容

  • 没有找到相关文章

最新更新