我正在考虑制定一个新的轻量级数据库人口框架。 我绝对讨厌dbunit。 在我做之前,我想知道是否有人已经做到了。 我不喜欢dbunit的东西: 1)不build议使用最简单的写入和上手格式。 他们希望你使用臃肿的格式。 有些甚至需要XML模式。 好吧,无所谓了。 2)它们不是按照你写的顺序填充行,而是按照顺序在xml文件中定义表格。 这是非常糟糕的,因为您不能以外键约束不会导致问题的方式来sorting数据。 这只是迫使你去完全把它们关掉的麻烦。 这也浪费了时间,使你的junit基类膨胀,包括禁用外键约束的代码。 您可能需要testing数据库types(hsqldb等),并以特定于数据库的方式禁用它们。 这太糟糕了。 如果dbunit帮助自动禁用外键约束作为其框架的一部分,可能会更好,但是他们不这样做。 他们确实跟踪方言…为什么不使用它们呢? 最终,所有这一切都迫使程序员浪费时间,而不是迅速起床和testing。 3)XML是一个写作的痛苦。 我不必多说这个。 他们还提供了很多方法来做到这一点,我认为这只是使问题复杂化。 只要提供一个真正坚实的方法,并完成它。 4)当你的数据变大时,跟踪ID和他们一致/正确的关系是一个皇家的痛苦。 另外,如果你不在一个月的项目上工作,你怎么记得user_id 1是一个pipe理员,user_id 2是一个商业用户,user_id 3是一个工程师和user_id 4是别的东西? 回去检查这是浪费更多的时间。 应该有一个有意义的方式来检索它以外的任意数字。 5)速度很慢。 我发现,除非使用hsqldb,否则会很痛苦。 它不一定是。 还有很多方法搞砸了它的configuration,因为“开箱即用”并不容易。 有一个驼峰,你必须经过正确的工作。 所有这一切都鼓励人们不要使用它,或者当它们开始使用它的时候被激怒。 6)有些价值倾向于重复,喜欢date。 指定默认值,或者甚至让框架自动设置默认值,即使没有告诉它把默认值放在那里,也不错。 这样你就可以用你想要的值创build对象,并把其余的closures。 如果不需要,这肯定会指定列的每个angular落和裂缝。 7)可能最令人讨厌的是第一个条目必须包含所有的值 – 甚至是空的占位符 – 或者将来的行不会select你实际指定的列。 对于将[NULL]转换为实际的null值,DBunit没有合理的默认值。 你必须手动添加它。 告诉我,谁没有用dbunit做到这一点? 每个人都有。 它不应该是这样的! 这意味着如果你有一个多态的对象,你必须把所有的外键声明为第一行每个子类的连接表,尽pipe它们是空的。 如果你为所有的子types做一个表,你仍然需要指定第一行的所有字段。 这太糟糕了。 为了满足我的需求,还是应该成为更好的数据库testing框架的下一个框架开发人员?