使用内存中的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参数来指定用于测试的数据库主机名/用户名/数据库/密码。 我不会亲自打扰。
或者,如果您真的很热衷,可以让测试工具找到initdb
和postgres
二进制文件,运行initdb
来创建数据库,修改pg_hba.conf
以trust
,运行postgres
以在随机端口上启动它,创建用户,创建一个DB,并运行测试。 就个人而言,我认为这是一个应该避免的重大痛苦; 只需配置一个测试数据库就更容易了。
有些人在PostgreSQL方言模式下使用H2数据库来运行测试。 我认为这几乎和使用SQLite进行测试和使用PostgreSQL进行开发的Rails人一样糟糕。