我正在尝试编写一个 pex 测试,我注意到它总是提供一个错误值作为我想要的参数之一。我的测试看起来像这样(简化:有/还有更多参数,但没有什么不同):
[PexMethod]
public void TestCtor(bool value)
{
ArbitraryType myType = new ArbitraryType(value);
}
我想测试一个场景,让 pex 进行探索,确保这value
是真的。我做了另一个看起来像这样的测试:
[PexMethod]
public void TestCtor(bool value)
{
Contract.Requires(value == true);
ArbitraryType myType = new ArbitraryType(value);
}
但是当我让 Pex 探索它时,它仍然会吐出错误的结果,value
并且它生成的测试“通过”。如果我在要求后面加上一行,Contract.Assert(!value);
它将创建另一个测试并通过 truevalue
以使断言失败。
问题是,为什么 Pex 不满足代码合同?