【发布时间】:2014-02-04 14:31:15
【问题描述】:
我在我的 C# 应用程序中使用代码协定以及单元测试。当我询问单元测试的代码覆盖率结果时,包含代码契约的行被报告为“未覆盖”。
我们以一个有 2 个参数的方法为例:
void MyMethod(object param1, object param2) {
Contract.Requires<ArgumentNullException>(param1 != null);
Contract.Requires<ArgumentNullException>(param2 != null);
// Other stuff covered explicitly by unit tests
}
既然条件不满足合约就会失败,代码覆盖率工具不应该报告两个参数都被覆盖了吗?
据我了解,合同涵盖的代码不需要再次进行单元测试。这是正确的吗?
【问题讨论】:
-
感谢您的链接!我认为这意味着我必须通过单元测试来测试异常抛出,例如检查
MyMethod(null, null)是否真的抛出ArgumentNullException。但是,这不太理想,因为合约已经保证了功能。有人可以确认是这种情况吗?
标签: c# .net unit-testing code-contracts