首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅在内存中运行PostgreSQL

仅在内存中运行PostgreSQL
EN

Stack Overflow用户
提问于 2011-10-24 15:58:30
回答 5查看 113.6K关注 0票数 130

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

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

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

类似于HSQL,但适用于postgres。我该怎么做呢?

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

EN

回答 5

Stack Overflow用户

发布于 2017-09-21 19:18:09

现在可以通过OpenTable:https://github.com/opentable/otj-pg-embedded中的嵌入式PostgreSQL组件在JUnit测试中运行内存中的PostgreSQL实例。

通过将依赖项添加到otj-pg嵌入库(https://mvnrepository.com/artifact/com.opentable.components/otj-pg-embedded)中,您可以在@Before和@Afer挂钩中启动和停止您自己的PostgreSQL实例:

EmbeddedPostgres pg = EmbeddedPostgres.start();

他们甚至提供了一个JUnit规则,让JUnit自动为您启动和停止PostgreSQL数据库服务器:

@Rule
public SingleInstancePostgresRule pg = EmbeddedPostgresRules.singleInstance();
票数 38
EN

Stack Overflow用户

发布于 2020-08-03 23:21:08

如果你正在使用NodeJS,你可以使用pg-mem (免责声明:我是作者)来模拟postgres db的最常见的特性。

你将有一个完整的内存中,隔离的,平台无关的数据库来复制PG的行为(甚至是runs in browsers)。

我写了一篇文章来展示如何将它用于你的单元测试here

票数 6
EN

Stack Overflow用户

发布于 2013-06-11 04:45:19

您还可以使用PostgreSQL配置设置(如问题和接受的答案here中详细介绍的设置)来获得性能,而不必求助于内存中的数据库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7872693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档