测试驱动开发 - 我应该测试数据库列和索引吗?

时间:2016-04-19 17:32:51

标签: ruby-on-rails ruby unit-testing tdd shoulda

我是TDD的新手。我发现shoulda gem能够测试数据库实体是否存在列以及测试其索引的能力。

但是有必要在我的测试套件中包含列和索引的测试吗?

我是否需要关注在开发过程中可能删除任何列和索引?

2 个答案:

答案 0 :(得分:3)

不要测试数据库列;那只是测试实施。不要测试实现,测试行为。测试使用存储在这些列中的属性的功能。例外:如果你的架构有外部要求(我从来没有想到这个,但我可以想象),编写测试以证明满足这些要求可能会有所帮助。

测试索引?这取决于。如果你是严格测试驱动的,你可能想为每个索引编写一个测试,纯粹是出于性能原因而添加的。我非常考试,但我不会写这样的测试;我只是创建索引。对指数的真正考验是它们对绩效的影响。在任何情况下,没有必要测试是否存在必须存在的索引以支持您已经测试的功能(主键,外键,唯一约束等)。

答案 1 :(得分:0)

我很少测试列和索引。如果要确保数据库迁移或约束正确,可以包含它。生产将是发展的合理副本。因此,如果您真的关心所有潜在的风险,您可以编写测试用例。