【问题标题】:using spring, hibernate and scala, is there a better way to load test data than dbunit?使用spring、hibernate和scala,有没有比dbunit更好的加载测试数据的方法?
【发布时间】:2010-05-31 20:43:56
【问题描述】:

以下是我非常不喜欢 dbunit 的一些地方:

1) 您无法指定插入的确切顺序,因为 dbunit 喜欢按表名对插入进行分组,而不是按您在 XML 文件中定义的顺序。当您的记录依赖于其他表中的其他记录时,这是一个问题,因此您必须在测试期间禁用外键约束......这实际上很糟糕,因为这些外键约束将在生产中被触发,而您的测试不会了解他们!

2) 他们似乎一心要强迫您使用 xml 命名空间来定义您的 xml……老实说,我懒得这样做。我喜欢没有任何命名空间的 data.xml。有用。但他们如此坚决地反对它。

3) 在每个测试的基础上创建不同的 xml 文件很困难,因此它实际上鼓励为您的整个应用程序创建数据。不幸的是,一旦数据变大并且事情变得复杂,这个过程也有点臃肿。必须有一种更好的方法来将测试数据拆分成块,而无需在所有测试中复制/粘贴大量测试数据。

4) 在一个大的 xml 文件中跟踪 id 引用是不可能的。如果您有 130 个域类,那只会令人眼花缭乱。该模型根本无法扩展。

在 Spring/Hibernate 空间中是否有一些不那么臃肿和更好的东西? db 单元已经不再受欢迎,我真的在寻找更好的东西。

【问题讨论】:

    标签: java spring testing dbunit


    【解决方案1】:

    对于 1) 查看是否可以将约束定义为可延迟 (Oracle docs),检查将延迟直到事务提交。

    对于其他人,请考虑使用工厂方法,即使用知道如何创建对象并将它们插入数据库以进行测试的工厂类。这可能会破坏某些测试目的,因为您依赖插入/更新代码来进行测试。

    我发现工厂方法可以正常工作,如果你让它足够简单的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多