许多小型dbunit数据集还是一个大型数据集?

HDa*_*ave 2 database testing junit dbunit

在我调整架构时,在我看来,在多个小数据集中传播测试数据会产生维护问题.有人看到创建一个更大的测试数据集的问题?通过"更大",我仍然只谈论几百条记录.

Pas*_*ent 6

我不会使用唯一的大型数据集(如果您不需要它,您希望避免任何开销)并遵循DbUnit的最佳实践建议:

使用多个小数据集

大多数测试不需要重新初始化整个数据库.因此,不要将整个数据库数据放在一个大型数据集中,而是尝试将其分解为许多较小的块.

这些块可以粗略地对应于逻辑单元或组件.这减少了因为每次测试初始化​​数据库而导致的开销.这也有利于团队开发,因为许多开发不同组件的开发人员可以独立地修改数据集.

对于集成测试,您仍然可以使用CompositeDataSet类在运行时将多个数据集逻辑组合成一个大数据集.

来自Unitils人员的更多反馈:

自动测试数据库维护

编写数据库测试时,请记住以下准则:

  • 使用少量测试数据,包含尽可能少的数据.在数据文件中,仅指定在连接列中使用的列或测试查询的where子句.
  • 使数据集特定于测试类.不要在不同的测试类之间重用数据集,例如,不要为所有测试类使用1个大域数据集.这样做会使测试测试数据的更改变得非常困难而不会为另一个测试制动任何东西.您正在编写单元测试,此类测试应独立于其他测试.
  • 不要使用太多数据集.您使用的数据集越多,所需的维护就越多.尝试为该测试类中的所有测试重用testclass数据集.只有使用方法数据集才能使您的测试更容易理解和清晰.
  • 限制预期结果数据集的使用.如果您确实使用它们,则只包括对测试很重要的表和列,而忽略其余部分.
  • 每个开发人员使用数据库架构.这允许开发人员插入测试数据并运行测试而不会相互干扰.
  • 禁用测试数据库上的所有外键而不是空约束.这样,数据文件不需要包含绝对必要的数据

使用具有足够数据的小型数据集在过去对我们来说效果很好.当然,如果你调整数据库有一些维护,但这对某些组织来说是可管理的.