使用内存中的PostgreSQL

我是数据库的新手,但我将在我的Hibernate应用程序中使用PostgreSQL。 很明显如何安装Postgres,与hibernate绑定并使用它。 但我无法弄清楚如何使用maven运行内存Postgres数据库进行测试。 可能吗? 如果没有 – 在这种情况下有任何建议如何测试我的申请?

ps链接到相应的教程是最理想的,我将非常感谢他们。 谢谢!

(我在post上修改并扩展了这个答案,这个是双重的 ;我在这里保留这个,因为这是对这个问题的更直接的答案)。

但我无法弄清楚如何使用maven运行内存Postgres数据库进行测试。 可能吗?

不,这是不可能的。 PostgreSQL在C中实现并编译为平台代码。 你不能把它推到一个jar然后把它作为一次性的内存数据库来启动它。

相反,有一个标准的测试配置并记录它。 认为:

要运行这些测试,您需要在localhost端口5432上安装并运行PostgreSQL 9.2或更高版本,并且名为“myapptest”的用户拥有名为“myapptest”的数据库。 必须使用密码“abcdefg”允许“md5”身份validation,或者您可以使用“信任”模式。

要进行此设置,您可以使用:

  CREATE USER myapptest PASSWORD 'abcdefg'; CREATE DATABASE myapptest OWNER myapptest TEMPLATE template0; 

并在pg_hba.conf添加一个条目,如:

  host myapptest myapptest 127.0.0.1/32 md5 host myapptest myapptest ::1/128 md5 

使用Maven参数来控制是否运行到达数据库的测试,以便其余测试仍然可以运行。

如果你热衷的话,你可以使用Maven参数来指定用于测试的数据库主机名/用户名/数据库/密码。 我不会亲自打扰。

或者,如果您真的很热衷,可以让测试工具找到initdbpostgres二进制文件,运行initdb来创建数据库,修改pg_hba.conftrust ,运行postgres以在随机端口上启动它,创建用户,创建一个DB,并运行测试。 就个人而言,我认为这是一个应该避免的重大痛苦; 只需配置一个测试数据库就更容易了。

有些人在PostgreSQL方言模式下使用H2数据库来运行测试。 我认为这几乎和使用SQLite进行测试和使用PostgreSQL进行开发的Rails人一样糟糕。