dbunit如何将真实数据库与测试数据库同步

时间:2016-05-15 13:02:44

标签: dbunit

我有一个指向mysql数据库的应用程序。

我一直在尝试使用DBUnit来设置我的测试环境,这很好用。

问题是在配置DBUnit时我将其指向SAME mysql数据库。因此,当执行DBUnit时,它将获取指定的dataset.xml并覆盖原始数据库中的信息。这是有道理的,因为我指的是它。

问题是,我是否应该仅为测试创建一个新数据库,以便我的DBUnit可以指向它?如果是这样,我将如何管理原始数据库与测试之间的结构同步?

提前致谢。

1 个答案:

答案 0 :(得分:1)

  我应该只为测试创建一个新数据库,所以我的DBUnit可以指向它吗?

这是一种更好的方法,因为它可以消除多个问题。

  

我如何管理原始数据库与测试之间的结构同步?

你没有在持久性堆栈中提到技术,例如Hibernate,Spring / Spring Boot / Spring Data / Flyway / LiquiBase /等。建议更多如何实现这一点。通常,在测试运行启动时在模式中运行DDL(从来自Flyway的托管DDL或来自Hibernate的自动生成)。

此外,我首选的典型测试方法是:

  1. 内存/嵌入式数据库的速度,例如Apache Derby,在启动测试之前自动启动。
  2. 使用来自带注释实体的Hibernate DDL gen在模式中创建表。
  3. 任何表中都没有现有行;在将任何文件存储在构建输出目录的子目录中时,会自动使用嵌入式数据库和干净构建。
  4. 使用DatabaseOperation.CLEAN_INSERT [0]配置的dbUnit。
  5. 每个测试的最小dbUnit数据。