|
|
1
100
我不知道DbUnit的真正替代品,也不知道 @Joe 在我眼里:
也就是说,我个人已经成功地多次在小型和大型项目中使用了DbUnit,我发现它非常有用,特别是在使用 Unitils 以及它的DbUnit模块。这并不意味着它是完美的,无法改进,但有了体面的工具(定制或类似Unitils),使用它已经是一个体面的经验。
DbUnit支持平面或结构化XML、XLS、CSV。您想使用什么革命性的格式?顺便说一下,在使用XML时,DTD或模式不是必需的。但它给了你一些好东西,比如验证和自动完成,这有什么不好?Unitils可以很容易地为你生成它 Generate an XSD or DTD of the database structure .
同时,Unitils提供了透明处理约束的支持,请参见 Disabling constraints and updating sequences .
我想疼痛是主观的,但我不觉得疼痛,特别是在使用模式和自动完成时。你说的银弹是什么? 把它们放小一点,就知道了 best practice . 你违背了一个已知的最佳实践,然后抱怨。。。
是的,任务转换是反作用的。但是,由于您使用的是低级数据,因此必须知道它们是如何表示的,因此,除非您使用更高级的API,否则没有什么神奇的解决方案(但这不是DbUnit的目的)。
这是数据库和JDBC的固有特性,而不是DbUnit。如果你想让事情越快越好(如果你有更好的不可知论方法,我很乐意了解它),那么就使用像H2这样的快速数据库。
当使用如演示中所述的单元时 Unitils - Home - JavaPolis 2008 或 Unit testing: unitils & dbmaintain .
如果你认为你能让事情变得更好,也许可以为现有的解决方案做出贡献。如果这是不可能的,如果你认为你可以创建杀手数据库测试框架,我能说什么,做它。但别忘了,咆哮是很容易的,用你自己的解决方案想出解决方案就不那么容易了。 |
|
|
2
28
作为一名DbUnit开发人员,我非常感谢您的批评,我必须部分同意您的观点。我们目前正在开始设计下一个DbUnit主要版本,我希望邀请您参与讨论和开发。 我不打算回答您的问题,因为您的问题实际上与DbUnit无关,而是与DbUnit替代方案有关。无论如何,我只想强调你的第7点是完全错误的:你不再需要指定第一行的所有列,这个特性被称为列感知。我不会告诉你为什么默认情况下不启用它,因为你一定很聪明,可以自己理解它。 我将对scaladbtest进行深入的研究,希望我们能整合他们的想法。 |
|
|
3
16
面对使用DBUnit的类似问题,我发现: http://dbsetup.ninja-squad.com/index.html 可能会解决问题。例如,所有DB内容都包含在java类本身中,而不是在单独的文件中表示测试数据。 |
|
|
4
4
如果您使用Spring框架(或者不介意至少用于测试),那么 Spring DBUnit 是目前我所知道和使用的最好的(维护的)普通DBUnit替代品。引用他们的网站:
Spring DB unit似乎是用于DB单元测试的某种正式的Spring解决方案(使用DBUnit);至少库的作者/维护者Phil Webb正在SpringSource/Pivotal工作。 |
|
|
5
3
我使用DBUnit,用一些包装纸来平滑粗糙的边缘。一个可以补充或重叠功能的好工具是 Jailer . 它可以从引用数据库中提取数据子集,并将其存储为与DBUnit兼容的XML文件,或者存储为“拓扑排序的DML文件”,其中考虑了外键约束。 |
|
|
6
3
|
|
|
7
2
你说得很对。
在过去的几年里,我为很多门户网站工作,主要是使用PHP,但也偶尔使用一些Java。
不管怎么说,关键是仅仅为单元测试准备一个基本的数据库存储是不够的,因为对于复杂的存储设置来说,它们常常无法在实际环境中重现问题,而且维护起来非常麻烦。
不想听起来像个粉丝:有一个地方一切都很好
|
|
|
8
1
|
|
|
10
1
我对DBUnit也有类似的问题。尤其是用于填充本地开发数据和从真实数据库导出数据。我遇到了一些情况,它会导出一个数据集,但它无法导入。 这激励我为它写了一个新的图书馆: https://github.com/jeffskj/phonydata 它使用groovy DSL来定义数据集,这使得数据的表示变得非常紧凑,并且可以做一些很酷的事情,比如生成随机数据,因为它只是groovy代码。 |
|
|
11
1
DBUnit的情况有时确实令人沮丧。有些问题是从 Marc Philipp 具有 dbunit-datasetbuilder ,特别是如果你把它和 validator SZE . 免责声明:所有引用的github资源都由我维护。 |
|
|
13
0
我刚刚发布了一个基于groovy DSL的框架,名为pedal loader,可通过 github . 文档 here . 它允许您直接使用JPA实体级抽象。因为它是一个groovy脚本,所以您可以使用所有的groovy构造。 要将行插入到由名为Student的JPA实体支持的表中,并使用名为id、name和grade的字段(不是数据库列,而是映射字段),请执行以下操作:
Grade是Student类中映射到数据库列的枚举(可能使用JPA 2.1@Convert注释)。allStudents是一个包含行的列表,rowOfInterest是对特定行的引用。这些属性(所有学生和感兴趣的行)可用于单元测试。 |
|
|
14
0
另一种选择是用现代库包装DBUnit,以提高可用性和简洁性。我的选择是 database-rider ,这使得DBUnit很容易使用,甚至支持JUnit 5,如下例所示:
注意这是如何无缝地利用(简洁的)YAML测试数据集的(YAML而不是XML,尽管我相信DBUnit实际上支持这些数据集)。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |