2

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

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2011-03-23T18:13:12.870 回答