什么是从Java代码初始化一些轻量级PostgreSQL实例(可能在某个临时目录中)的最简单方法。我需要一些临时数据库来运行测试;所以最好的方法是在运行测试之前/之后创建/删除该群集(数据库)。用于测试目的的Postgres轻量级数据库
是否有一些Java库?是纯粹的Java代码可能,没有外部脚本?
我的堆栈是Java,Maven,jetty,TestNG,PostgreSQL。
什么是从Java代码初始化一些轻量级PostgreSQL实例(可能在某个临时目录中)的最简单方法。我需要一些临时数据库来运行测试;所以最好的方法是在运行测试之前/之后创建/删除该群集(数据库)。用于测试目的的Postgres轻量级数据库
是否有一些Java库?是纯粹的Java代码可能,没有外部脚本?
我的堆栈是Java,Maven,jetty,TestNG,PostgreSQL。
使用the PostgreSQL maven plugin,这是专为此目的而设计的。
如果在PATH
上找不到它们,您需要告诉它PostgreSQL的二进制文件在哪里。
如果你想推出自己你需要:通过ProcessBuilder
initdb
创建一个临时数据目录。pg_hba.conf
或通过ProcessBuilder
生成一个新的postgres
启动PostgreSQL的你ProcessBuilder
必须设置PATH
环境变量,以便PostgreSQL的可以找到它的其他二进制文件。
您不必生成自定义postgresql.conf
,因为您只需在命令行上传递参数即可。
postgres -D some-datadir -c port=5599 -c listen_addresses='127.0.0.1'
等等。但是,如果你愿意,你可以只是一个单一的行追加到默认postgresql.conf
像
include 'myapp-test.conf'
然后生成/复制myapp-test.conf
文件包含所有你想要的PostgreSQL的配置设置。如果由于命令行长度的限制,您有许多设置和/或复杂的设置,这可能会更容易,并且它可以更具可读性/可调试性。
启动PostgreSQL进行测试时不要使用默认端口。始终覆盖端口。
取决于你到底需要什么。只有数据库才能启动并运行?还是在测试之间管理数据?
testcontainers将帮助您启动和停止db。
dbunit将帮助您为测试准备数据。
缺点:
testegration - 意图,为您提供全面,准备使用和可扩展的生命周期(披露:我是创造者)。
缺点:
你也可以填补自己的空白(ProcessBuilder
,执行自定义脚本)。一如既往的交易:时间与金钱
https://github.com/yandex-qatools/postgresql-embedded –
也许你只需要DBUnit –
@Mr_Thorynque:DBUnit仍然需要一个数据库来连接。 –