1-е правило IntelliTest/Pex - это попытка увеличить покрытие кода. Если все заявления были покрыты, Pex остановится.
Существует много способов добавить код, который распространяется только при x = 2, например, в методе тестирования. Это может быть самым простым, что работает для меня:
[PexMethod]
public int bla([PexAssumeUnderTest]Class1 target, int x)
{
if(x == 2)
{
PexAssert.ReachEventually();
}
int result = target.bla(x);
return result;
// TODO: add assertions to method Class1Test.bla(Class1, Int32)
}
Окно результаты исследования должны показать:
x result
0 0
2 4
Я не знаю ни одного способа, чтобы иметь Pex автоматически генерировать тестовые случаи для всех параметров по умолчанию ,
В коде производства в реальном времени очень вероятно, что значение по умолчанию будет использоваться в коде, чтобы часто не возникало проблема с этой проблемой.
И если у вас есть все пути кода, на которые распространяется Pex, действительно ли имеет значение, используется ли значение по умолчанию или нет?
Это, вероятно, больше импорта, чтобы протестировать методы, которые вызывают «бла», и без доставки значения.
Вы правы, но это не имеет значения, однако я могу думать о сценариях, где это может иметь значение (изменения кода, постоянные изменения, плохое программирование и т. Д.). ReachEventually() кажется хорошим решением, чтобы поймать это – stklik