Jim*_* G. 7 pex .net-4.0 code-contracts visual-studio-2010-sp1
鉴于以下示例代码,我如何配置Pex以尊重我的代码合同?
public static IEnumerable<User> Administrators(this UserGroup userGroup)
{
Contract.Requires(userGroup != null);
Contract.Requires(userGroup.UserList != null);
return userGroup.UserList.Where(ul => ul.IsAdmin == true);
}
Run Code Online (Sandbox Code Playgroud)
当前问题:当我运行Pex时,它仍然会生成违反指定代码契约的测试用例.
仅供参考:以下是我的csproj文件中的"代码合同"设置.
首先,您需要使用 Requires 的类型化版本
使用 ArgumentNullException 作为 T
此外,在您的项目属性中,您需要告诉代码契约使用标准重写器。不要在失败时单击“断言”;)
Contract.Requires<ArgumentNullException>(i != null);
Run Code Online (Sandbox Code Playgroud)
那么你的代码将抛出一个 argumetn null 异常,并且 pex 可以向你的 pexmethod 添加一个属性来表示允许抛出它,并将创建一个抛出异常的通过测试
然后您可以推广这些并保存单元测试
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |