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