是否有嵌入式PostgreSql,以便我们可以对PostgreSql驱动的应用程序进行单元测试?
因为PostgreSql有一些方言,所以最好使用嵌入式PostgreSql本身,而不是其他嵌入式数据库.
嵌入并不一定意味着它必须嵌入到JVM进程中.它也不一定需要使用内存持久性.它应该由依赖关系管理(Maven,Gradle)自动加载,这样单元测试就可以在每台机器上运行,而无需安装和配置本地PostgreSQL服务器.
是否有嵌入式PostgreSql,以便我们可以对PostgreSql驱动的应用程序进行单元测试?
因为PostgreSql有一些方言,所以最好使用嵌入式PostgreSql本身,而不是其他嵌入式数据库.
嵌入并不一定意味着它必须嵌入到JVM进程中.它也不一定需要使用内存持久性.它应该由依赖关系管理(Maven,Gradle)自动加载,这样单元测试就可以在每台机器上运行,而无需安装和配置本地PostgreSQL服务器.
不,没有嵌入式PostgreSQL,即进程内可加载的数据库即库.PostgreSQL是面向过程的;每个后端都有一个线程,它会产生多个进程来完成工作.作为一个图书馆,它毫无意义.
The H2 database支持a limited subset of the PostgreSQL SQL dialect和PgJDBC驱动程序的使用.
can要做的是initdb
a new temporary database,在随机端口上以pg_ctl
开始,这样它就不会与其他实例冲突,运行测试,然后使用pg_ctl
停止它,最后删除临时数据库.
我建议您运行临时postgres on a non-default port,这样就不会与运行测试的机器上本地安装的PostgreSQL发生冲突.
(这里有is"嵌入式PostgreSQL,从ecpg的意义上讲,本质上是一个作为基于预处理器的C语言扩展嵌入到C source code中的PostgreSQL client.它仍然需要一个运行的服务器,而且使用起来有点不方便,不太推荐.它的存在主要是为了方便从其他各种数据库进行移植.)