gpt4 book ai didi

postgresql - 只在内存中运行 PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 11:04:49 25 4
gpt4 key购买 nike

我想为我编写的每个单元测试运行一个仅在内存中运行的小型 PostgreSQL 数据库。例如:

@Before
void setUp() {
String port = runPostgresOnRandomPort();
connectTo("postgres://localhost:"+port+"/in_memory_db");
// ...
}

理想情况下,我会将单个 postgres 可执行文件 checkin 版本控制,单元测试将使用该可执行文件。

类似 HSQL ,但对于 postgres。我怎样才能做到这一点?

我能得到这样的 Postgres 版本吗?如何指示它不使用磁盘?

最佳答案

这对于 Postgres 是不可能的。它不提供像 HSQLDB 或 MySQL 那样的进程内/内存引擎。

如果您想创建一个独立的环境,您可以将 Postgres 二进制文件放入 SVN(但它不仅仅是一个可执行文件)。

您将需要运行 initdb在你可以做任何事情之前设置你的测试数据库。这可以通过批处理文件或使用 Runtime.exec() 来完成。但请注意,initdb 并不是很快。您绝对不想为每个测试运行它。不过,您可能会在测试套件之前运行它。

然而,虽然可以做到这一点,但我建议您安装一个专用的 Postgres,您只需在运行测试之前重新创建测试数据库即可。

您可以使用模板数据库重新创建测试数据库,这使得创建它的速度非常快( 批量 比每次测试运行都运行 initdb 快)

关于postgresql - 只在内存中运行 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7872693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com