Я пытаюсь написать тест 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 исследует это, он все равно выплевывает значение false к value
и тест, который он генерирует, «проходит».Если я поставлю строку после требования, говорящего Contract.Assert(!value);
, он создаст еще один тест и передаст значение true для value
, чтобы провалить утверждение.
Вопрос в том, почему Пекс не выполняет кодовый контракт?