【问题标题】:Use dummy H2 DB for testing with Jooq使用虚拟 H2 DB 与 Jooq 进行测试
【发布时间】:2023-01-31 23:55:12
【问题描述】:

我想找到一种可靠的方法来使用 Jooq 测试我的 Maria DB 模式。 这就是我现在所拥有的:

  • 让 Jooq 和 Gradle 通过 org.jooq.codegen.XMLGenerator 从真实数据库(即 Maria 实例)中提取 XML 模式,这一步将生成一个 maria_information_schema.xml
  • 使用此模式生成所有 Java 类。

为了测试我将要编写的所有类,我开发了一种技术:

  • 触发嵌入 ram 数据库的 H2;
  • 构建一个 java InitDatabase.java手动设置一个与 MariaDB 尽可能相似的数据库模式;
  • 在 ram DB 上执行所有测试。

只要我不更改真实数据库上的某些内容并且我忘记在 InitDatabase.java 类上做同样的事情,这个过程就可以完美地工作。

我的问题是:有没有一种方法可以使用 XML 模式或生成的 java 类来创建与 MariaDb 具有相同模式的 H2 数据库,而无需手动编写所有创建表语句?

谢谢

【问题讨论】:

    标签: java junit mariadb h2 jooq


    【解决方案1】:

    这是一个开放式问题,没有明显的“正确”答案。 jOOQ 的官方观点是您可能需要重新考虑使用替代 RDBMS 来测试您可以做什么 with your target RDBMS directly, specifically using testcontainers

    您可以combine this approach with jOOQ's code generation 以获得更简化的开发过程。

    简而言之,jOOQ 的建议是使用:

    • 用于数据库变更管理的 Flyway 或 Liquibase
    • 用于代码生成的测试容器
    • 用于集成测试的测试容器

    其他等效产品显然也是可能的。

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 2021-04-19
      • 2019-12-17
      • 2019-04-01
      • 2018-02-05
      • 2021-09-27
      • 2017-07-01
      • 2020-03-27
      相关资源
      最近更新 更多