Pex не удовлетворяет код контракта - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь написать тест 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, чтобы провалить утверждение.

Вопрос в том, почему Пекс не выполняет кодовый контракт?

1 Ответ

1 голос
/ 29 июля 2011

Я не уверен, что Пекс собирается делать с Контрактами в тестовых методах, но я не вижу, что это хорошо:)

Если вы хотите, чтобы Пекс делал это, правильночто нужно сделать, это использовать PexAssume.IsTrue(value).

...