【问题标题】:Integration tests with specific SQL command for PostgreSQL database使用 PostgreSQL 数据库的特定 SQL 命令进行集成测试
【发布时间】:2021-08-04 22:30:45
【问题描述】:
我有一个服务调用存储库,该存储库生成一些特定的 SQL 命令,这些命令仅在 PostgreSQL 上可用(如 current_date 和 array_agg)。我想为这个存储库做一些集成测试。通常你会为这种集成测试生成一个 H2 数据库,但它仅适用于标准 sql,不适用于特定 SQL。你知道测试我的存储库的方法吗?我应该为这些测试生成一个 Postgres SQL 服务器,还是有一些像 postgres 到 h2 这样的翻译器?或者其他避免产生 Postgres 实例的方法?
问候,
模糊。
【问题讨论】:
标签:
spring
postgresql
unit-testing
【解决方案1】:
如果您想对非标准 PostgreSQL SQL 语法进行自动测试,您唯一的好选择是针对 PostgreSQL 进行测试。如果您针对其他任何东西进行测试,它要么会失败,要么您无法确定它是否适用于 PostgreSQL。
【解决方案2】:
查看testcontainers,它们是为集成测试生成基础架构依赖项的好方法。如果您想测试 PostgreSQL 特定查询,那么没有其他方法,只能针对该数据库运行它。使用 testcontainers 可以很容易地设置和拆除测试数据库。