【发布时间】:2010-06-03 21:58:29
【问题描述】:
在我看来,跨多个小型数据集传播测试数据似乎会在调整架构时造成维护上的麻烦。有人看到创建单个更大的测试数据集有问题吗?通过“更大”,我仍然只谈论总共几百条记录。
【问题讨论】:
标签: database testing junit dbunit
在我看来,跨多个小型数据集传播测试数据似乎会在调整架构时造成维护上的麻烦。有人看到创建单个更大的测试数据集有问题吗?通过“更大”,我仍然只谈论总共几百条记录。
【问题讨论】:
标签: database testing junit dbunit
我不会使用唯一的大型数据集(如果不需要它,您希望避免任何开销)并遵循 DbUnit 的 Best Practices 建议:
Use multiple small datasets
您的大多数测试都不需要 整个数据库要重新初始化。 所以,而不是把你的整个 一个大型数据集中的数据库数据, 试着把它分成许多更小的 块。
这些块大概可以 对应于逻辑单元,或 成分。这减少了开销 由初始化数据库引起 对于每个测试。这也有利于 自许多开发人员以来的团队开发 在不同的组件上工作可以 独立修改数据集。
对于集成测试,您仍然可以 使用 CompositeDataSet 类 逻辑组合多个数据集 在运行时变成一个大的。
来自 Unitils 人员的更多反馈:
Automatic test database maintenance
在编写数据库测试时,请牢记以下准则:
- 使用少量测试数据集,包含尽可能少的数据。在您的数据文件中,仅指定在连接列或测试查询的 where 子句中使用的列。
- 使数据集测试类特定。不要在不同的测试类之间重复使用数据集,例如不要为所有测试类使用 1 个大域数据集。这样做会使得在不为另一次测试制动的情况下更改测试数据变得非常困难。您正在编写一个单元测试,这样的测试应该独立于其他测试。
- 不要使用太多的数据集。您使用的数据集越多,需要的维护就越多。尝试为该测试类中的所有测试重用测试类数据集。仅在使您的测试更易于理解和清晰时才使用方法数据集。
- 限制使用预期结果数据集。如果您确实使用它们,请仅包含对测试很重要的表和列,而忽略其余部分。
- 为每个开发人员使用一个数据库模式。这允许开发人员插入测试数据并运行测试,而不会相互干扰。
- 禁用测试数据库上的所有外键和非空约束。这样,数据文件只需要包含绝对必要的数据
过去,使用包含足够数据的小型数据集对我们来说效果不错。当然,如果您调整数据库,则需要进行一些维护,但这对于某些组织来说是可以管理的。
【讨论】: