在我调整架构时,在我看来,在多个小数据集中传播测试数据会产生维护问题。有人看到创建一个更大的测试数据集的问题?通过“更大”,我仍然只谈论几百条记录。
答案 0 :(得分:6)
我不会使用唯一的大型数据集(如果您不需要,可以避免任何开销)并遵循DbUnit的Best Practices建议:
Use multiple small datasets
您的大部分测试都不需要 整个数据库要重新初始化。 所以,而不是把你的整个 一个大数据集中的数据库数据, 试着把它分成许多小的 块。
这些块可以大致 对应于逻辑单元,或 组件。这减少了开销 初始化数据库导致的 每次测试。这也很方便 许多开发人员开发团队 致力于不同的组件可以 独立修改数据集。
对于综合测试,您仍然可以 使用CompositeDataSet类 逻辑上组合多个数据集 在运行时变成一个大的。
来自Unitils人员的更多反馈:
Automatic test database maintenance
编写数据库测试时,请记住以下准则:
- 使用少量测试数据,包含尽可能少的数据。在数据文件中,仅指定在连接列中使用的列或测试查询的where子句。
- 使数据集特定于测试类。不要在不同的测试类之间重用数据集,例如,不要为所有测试类使用1个大域数据集。这样做会使测试测试数据的更改变得非常困难而不会为另一个测试制动任何东西。您正在编写单元测试,此类测试应独立于其他测试。
- 不要使用太多数据集。您使用的数据集越多,所需的维护就越多。尝试为该测试类中的所有测试重用testclass数据集。只有使用方法数据集才能使您的测试更容易理解和清晰。
- 限制预期结果数据集的使用。如果您确实使用它们,则只包括对测试很重要的表和列,而忽略其余部分。
- 每个开发人员使用数据库架构。这允许开发人员插入测试数据并运行测试而不会相互干扰。
- 禁用测试数据库上的所有外键而不是空约束。这样,数据文件不需要包含绝对必要的数据
过去使用具有足够数据的小型数据集对我们来说效果不错。当然,如果你调整数据库有一些维护,但这对某个组织来说是可以管理的。