0

我正在尝试编写一个 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 不满足代码合同?

4

1 回答 1

1

我不确定 Pex 将在测试方法中对合同做什么,但我看不出这是一件好事 :)

如果您希望 Pex 执行此操作,正确的做法是使用PexAssume.IsTrue(value).

于 2011-07-29T02:55:59.917 回答