【发布时间】:2009-01-29 20:52:40
【问题描述】:
我在使用 C# 4.0 和之前使用大量单元测试(不是 TDD)之前使用合同。我想知道 DbC 是否消除了编写外部单元测试的需要?
就我个人而言,我发现合约更适合构建健壮的框架,因为合约与代码本身紧密耦合,并提供其他好处。
你们觉得呢?
【问题讨论】:
标签: c# .net unit-testing design-by-contract
我在使用 C# 4.0 和之前使用大量单元测试(不是 TDD)之前使用合同。我想知道 DbC 是否消除了编写外部单元测试的需要?
就我个人而言,我发现合约更适合构建健壮的框架,因为合约与代码本身紧密耦合,并提供其他好处。
你们觉得呢?
【问题讨论】:
标签: c# .net unit-testing design-by-contract
我认为这是“轮回”的另一种方式 - 单元测试比通过契约结构进行编程更可取。
我这么说是因为 PoC 检查通常表示为可以在生产中随意关闭的断言。 (即使是内置对 PoC 支持的 Bertrand Meyers 的 Eiffel 语言,也建议在生产环境中关闭它们。)
我宁愿拥有一套完整的单元测试来测试“快乐路径”、异常情况和边缘条件。当以 PoC 不具备的方式进行重构时,它们很有用。
【讨论】:
我认为 DbC 可以帮助您验证部分单元测试通常可以做什么。
使用 DbC 对方法的输入/输出验证等工作非常有效,并且可以节省您的时间。
但是对于更复杂的验证(例如依赖模拟)使用外部单元测试会更简单。
所以我不认为您可以通过使用它们来消除所有外部单元测试需求。
【讨论】: