【问题标题】:DbC (Design by Contract) and Unit TestsDbC(按合同设计)和单元测试
【发布时间】:2009-01-29 20:52:40
【问题描述】:

我在使用 C# 4.0 和之前使用大量单元测试(不是 TDD)之前使用合同。我想知道 DbC 是否消除了编写外部单元测试的需要?

就我个人而言,我发现合约更适合构建健壮的框架,因为合约与代码本身紧密耦合,并提供其他好处。

你们觉得呢?

【问题讨论】:

    标签: c# .net unit-testing design-by-contract


    【解决方案1】:
    【解决方案2】:

    我认为这是“轮回”的另一种方式 - 单元测试比通过契约结构进行编程更可取。

    我这么说是因为 PoC 检查通常表示为可以在生产中随意关闭的断言。 (即使是内置对 PoC 支持的 Bertrand Meyers 的 Eiffel 语言,也建议在生产环境中关闭它们。)

    我宁愿拥有一套完整的单元测试来测试“快乐路径”、异常情况和边缘条件。当以 PoC 不具备的方式进行重构时,它们很有用。

    【讨论】:

      【解决方案3】:

      我认为 DbC 可以帮助您验证部分单元测试通常可以做什么。

      使用 DbC 对方法的输入/输出验证等工作非常有效,并且可以节省您的时间。
      但是对于更复杂的验证(例如依赖模拟)使用外部单元测试会更简单

      所以我不认为您可以通过使用它们来消除所有外部单元测试需求。

      【讨论】:

      • 依赖模拟是指 UI 依赖等?如果是这样,首先到那里结束不是一个坏习惯吗? :)
      • 哦,不,我的意思是任何“难以控制”的依赖项,例如数据库、网络或您要单独进行单元测试的其他模块(出于测试效率原因)
      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多