是否有嵌入式PostgreSql,以便我们可以对PostgreSql驱动的应用程序进行单元测试?

因为PostgreSql有一些方言,所以最好使用嵌入式PostgreSql本身,而不是其他嵌入式数据库.

嵌入并不一定意味着它必须嵌入到JVM进程中.它也不一定需要使用内存持久性.它应该由依赖关系管理(Maven,Gradle)自动加载,这样单元测试就可以在每台机器上运行,而无需安装和配置本地PostgreSQL服务器.

推荐答案

不,没有嵌入式PostgreSQL,即进程内可加载的数据库即库.PostgreSQL是面向过程的;每个后端都有一个线程,它会产生多个进程来完成工作.作为一个图书馆,它毫无意义.

The H2 database支持a limited subset of the PostgreSQL SQL dialect和PgJDBC驱动程序的使用.

can要做的是initdb a new temporary database,在随机端口上以pg_ctl开始,这样它就不会与其他实例冲突,运行测试,然后使用pg_ctl停止它,最后删除临时数据库.

我建议您运行临时postgres on a non-default port,这样就不会与运行测试的机器上本地安装的PostgreSQL发生冲突.

(这里有is"嵌入式PostgreSQL,从ecpg的意义上讲,本质上是一个作为基于预处理器的C语言扩展嵌入到C source code中的PostgreSQL client.它仍然需要一个运行的服务器,而且使用起来有点不方便,不太推荐.它的存在主要是为了方便从其他各种数据库进行移植.)

Postgresql相关问答推荐

PostgreSQL中btree_gist索引涉及integer和tstzrange属性查询计划的问题

PostgreSQL:如何 for each 唯一的客户输入/更新列中的数据,并将其递增1直到表的末尾

将列类型从文本[]更改为jsonb[]

将XML解析从T-SQL迁移到Postgres时出现问题

如何在Postgres中对分区表使用Hibernate验证?

Postgres数据库系统已准备好接受连接和docker compose

无法使用golang在postgresql中使用自定义类型插入/更新数据

PostgreSQL - 继承表的常见自动增量

处理 sqlalchemy 断开连接的更好方法

使用 try/except 与 psycopg2 或with closing?

timezone date_trunc 函数

从 PostgreSQL 中的字段中提取数字

如何缩小 pg_toast 表?

PostgreSQL:如何在用户级别设置 search_path?

PG::ConnectionBad FATAL:role "Myname" does not exist

错误:prepared statement "S_1" already exists

如何将 PostgreSQL 查询输出导出到 csv 文件

PostgreSQL 中是否有类似 zip() 函数的东西,它结合了两个数组?

PostgreSQL:如果不存在则创建表 AS

重命名 Amazon RDS 主用户名