代码合同真的有助于单元测试吗?

San*_*box 8 c# unit-testing .net-4.0 code-contracts

我对单元测试有相当多的了解.我一直试图阅读代码合同.它真的有助于单元测试吗?它是否被高估了,特别是当我们谈论有助于进行单元测试的代码合同时.我特指的是.net 4.0中的合同.我使用nunit进行单元测试.

Rya*_*yes 4

。单元测试基本上是一个契约,它规定 MyMethod() 接受 X 并期望 Y 将成为结果,如果它不这样做,那么单元测试就会失败,并且作为 MyMethod() 的开发人员,您会收到警告,指出您破坏了里面有东西。代码契约确实可以帮助您编写单元测试,因为契约中的需求使您在编写单元测试时更容易了解单元测试的需求。然而,代码契约的真正原因不是为了您,而是为了使用您创建的 API 的其他开发人员。单元测试可以让您了解正确的输入和输出,但是当您将代码发布到野外时,单元测试不会与 .dll 一起发布。代码契约使其他开发人员能够通过编译时契约和检查了解这些相同的要求。合约可以防止那些有不阅读方法文档并开始传递内容的可怕倾向的开发人员(我),所以现在他们将通过合约得到主动警告。