<分区>
我是数据库的新手,但我打算在我的 Hibernate 应用程序中使用 PostgreSQL。如何安装 Postgres、与 hibernate 绑定(bind)并使用它是相当清楚的。但我无法弄清楚如何使用 Maven 运行内存中的 Postgres 数据库进行测试。是否可以? 如果没有 - 任何建议如何在这种情况下测试我的应用程序?
附注相应教程的链接是最可取的,我将非常感谢。 谢谢!
<分区>
我是数据库的新手,但我打算在我的 Hibernate 应用程序中使用 PostgreSQL。如何安装 Postgres、与 hibernate 绑定(bind)并使用它是相当清楚的。但我无法弄清楚如何使用 Maven 运行内存中的 Postgres 数据库进行测试。是否可以? 如果没有 - 任何建议如何在这种情况下测试我的应用程序?
附注相应教程的链接是最可取的,我将非常感谢。 谢谢!
最佳答案
(我已经修改并扩展了这个答案 on the post this one is a dup of ;我在这里保留它,因为它是对这个问题的更直接的答案)。
But I can't figure out how to run in-memory Postgres database with maven for testing. Is it possible?
不,这是不可能的。 PostgreSQL 以 C 语言实现并编译为平台代码。您不能将其放入 jar
中并将其作为一次性内存数据库启动。
相反,有一个标准的测试配置并记录它。思考:
To run these tests you'll need PostgreSQL 9.2 or newer installed and running on localhost port 5432, with a user named 'myapptest' who owns a database named 'myapptest'. 'md5' authentication must be permitted with password 'abcdefg', or you can use 'trust' mode.
To set this up you might use:
CREATE USER myapptest PASSWORD 'abcdefg'; CREATE DATABASE myapptest OWNER myapptest TEMPLATE template0;
and add an entry in
pg_hba.conf
like: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
在随机端口启动,创建用户,创建一个数据库,并运行测试。我个人认为这是一个应该避免的主要痛苦;只配置一个测试数据库要容易得多。
有些人改为使用 PostgreSQL 方言模式下的 H2 数据库来运行测试。我认为这几乎与使用 SQLite 进行测试和使用 PostgreSQL 进行开发的 Rails 人员一样糟糕。
关于java - 使用内存中的 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288667/
相关文章:
java - RabbitMQ Spring AMQP - 一段时间后的消息处理
java - 在Hibernate中对于composite-id,为什么类应该实现Serialized
java - Spring getJdbcTemplate().update 插入动态对象
SQL 如何使用 Count 和 Group By WXY 和 Z
java - Android - 在FrameLayout中将RelativeLayout居中对齐
django - Postgres : Password authentication failed for user "user". 角色 "user"不存在