【问题标题】:How to start a postgresql instance for integration testing如何启动 postgresql 实例进行集成测试
【发布时间】:2012-09-26 08:00:46
【问题描述】:

通常我使用 hsqldb 进行一些集成测试,它工作正常。但是有些测试需要有一个 postgresql 实例。由于我们的生产服务器运行 postgresql,因此对生产数据库运行测试是个好主意。

是否有 maven 插件或类似的东西可以轻松地在给定端口上安装和启动 postgresql 数据库并在运行所有测试后将其关闭?

类似mysql-je 之类的mysql?

【问题讨论】:

    标签: java postgresql integration-testing


    【解决方案1】:

    我什么都不知道。但是您可能不想启动和停止实际的 PostgreSQL 服务器;您希望服务器始终运行,并根据需要创建和销毁数据库。

    您可以create a database in SQL,也可以destroy it。如果您设置了一个空的初始数据库,并且不用于存储任何数据,您可以拥有如下工作流程:

    1. 连接到空数据库
    2. 发出创建新数据库的命令
    3. 针对新数据库运行测试
    4. 发出删除新数据库的命令

    【讨论】:

    • 步骤 2) 应该是“从模板数据库创建一个新数据库。模板数据库已经可以包含一些测试数据。初始化测试环境的最快方法
    • 很可能是真的,但不一定。我更喜欢让测试数据库成为版本控制源代码的一部分,因为它需要与代码同步更改(例如,当我添加一个新类时,我需要为其添加一个新表)。这意味着从项目中的转储文件而不是模板数据库驱动初始化。
    • 我们在以前的项目中非常有效地使用了一种混合方法,即使用一个模板(实际上是一个服务器端转储,因为这是使用 Oracle),它反映了生产系统的当前状态,并且项目中的 SQL 文件捕获了我们希望在下一个版本中进行的更改。初始化数据库包括加载模板/转储,然后应用更改。
    • 我不想将已安装的 postgresql 实例作为构建的先决条件。因此我的问题。感谢您的回答,但这无济于事,并且与我的问题有些无关。
    • @Janning:我明白了。我认为我不建议这样做; PostreSQL 并非旨在以这种方式使用,而是牢固地嵌入系统中。拥有一个能够即时下载其所有依赖项的构建真的很棒,但是有一些依赖项实际上并不实用:通常是应用程序服务器、数据库服务器和操作系统之类的东西。遗憾的是,PostgreSQL 就是其中之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2019-12-24
    • 2020-07-29
    • 1970-01-01
    • 2012-12-22
    • 2022-07-10
    • 2018-06-26
    相关资源
    最近更新 更多