【问题标题】:Test Driven Development - Should I test database columns and indexes?测试驱动开发 - 我应该测试数据库列和索引吗?
【发布时间】:2016-08-12 01:15:04
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    测试索引?视情况而定。如果您是严格的测试驱动型,您可能希望为纯粹出于性能原因添加的每个索引编写一个测试。我很喜欢测试驱动,但我不写这样的测试;我只是创建索引。对指数的真正考验是它们对性能的影响。无论如何,测试是否存在必须存在的索引以支持您已经在测试的功能(主键、外键、唯一约束等)是没有意义的。

    【讨论】:

    • 您是否因为客户的要求或其他原因测试索引性能?
    • 关注性能的原因有很多,包括客户(或产品经理)要求、应用程序在数据中心高效运行的需求、测试套件快速运行的愿望,和工程标准。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多