测试驱动开发——我应该测试数据库列和索引吗?
Test Driven Development - Should I test database columns and indexes?
我是 TDD 新手。我发现 shoulda
gem 能够测试数据库实体是否存在列以及测试其索引的能力。
但是是否有必要在我的测试套件中包含列和索引的测试?
我是否需要担心在开发过程中可能会删除任何列和索引?
不测试数据库列;那只是测试实施。不要测试实现,测试行为。执行使用存储在这些列中的属性的测试功能。例外:如果您的模式有外部要求(这在我身上从未发生过,但我可以想象),编写测试以表明满足这些要求可能会有所帮助。
测试指标?视情况而定。 如果您是严格测试驱动的,您可能希望为纯粹出于性能原因添加的每个索引编写测试。我很喜欢测试驱动,但我不写这样的测试;我只是创建索引。索引的真正测试是它们对性能的影响。在任何情况下,测试索引是否存在都是没有意义的,这些索引无论如何都必须存在以支持您已经测试的功能(主键、外键、唯一约束等)。
我很少测试列和索引。如果您想确保您的数据库迁移或约束正确,您可以包含它。生产将是开发的逻辑副本。所以如果你真的关心所有潜在的风险,你可能会写测试用例。
我是 TDD 新手。我发现 shoulda
gem 能够测试数据库实体是否存在列以及测试其索引的能力。
但是是否有必要在我的测试套件中包含列和索引的测试?
我是否需要担心在开发过程中可能会删除任何列和索引?
不测试数据库列;那只是测试实施。不要测试实现,测试行为。执行使用存储在这些列中的属性的测试功能。例外:如果您的模式有外部要求(这在我身上从未发生过,但我可以想象),编写测试以表明满足这些要求可能会有所帮助。
测试指标?视情况而定。 如果您是严格测试驱动的,您可能希望为纯粹出于性能原因添加的每个索引编写测试。我很喜欢测试驱动,但我不写这样的测试;我只是创建索引。索引的真正测试是它们对性能的影响。在任何情况下,测试索引是否存在都是没有意义的,这些索引无论如何都必须存在以支持您已经测试的功能(主键、外键、唯一约束等)。
我很少测试列和索引。如果您想确保您的数据库迁移或约束正确,您可以包含它。生产将是开发的逻辑副本。所以如果你真的关心所有潜在的风险,你可能会写测试用例。