仅为创建和清理数据库设置一次以测试所有DAO

hap*_*s10 5 testing spring maven-2 hibernate junit4

有没有人知道如何实现以下测试DAO的流程:

  • 运行SQL脚本以创建通用数据库设置(将数据插入所有表)
  • 测试DAO1
  • 测试DAO2
  • ...
  • 清理步骤1中创建的数据库数据

使用Spring,Hibernate,JUnit,Maven堆栈.

我知道最佳实践是我们为每个测试DAO(@BeforeClass)创建数据,并在完成所有测试后(@AfterClass)清理相同的数据.

但在我们的例子中,不同的数据库表之间存在太多的依赖关系(客户端的遗留数据库:(目前无法做任何事情).用测试数据填充每个表也需要许多其他表中的数据.所以,为每个DAO单独创建数据将非常困难且耗时.因此,我们确实只需要创建一次DB测试数据.

我使用BaseDAO中的静态块创建了测试数据(由每个DAO测试类扩展) - 显然只运行一次.但是当所有测试(所有DAO测试子类)完成时,如何清理相同的问题.在DAO Test类完成后,每次都会运行基类中的@AfterClass拆解方法.

请指教.

Dan*_*iel 2

如果您使用 Maven,那么使用DBUnit是一个不错的选择。它允许您从数据库导出测试数据(或仅以 XML 格式编写),以便导入以进行测试。它有一个Maven 插件,可以满足您的要求。