Да, можно генерировать тесты по граничным значениям для таких функций, как "Сумма" или "Разделить". Pex - хороший инструмент здесь.
Но чаще мы создаем тесты по бизнес-поведению. Рассмотрим пример из классической книги Beck tdd:
[Test]
public void ShouldRoundOnCreation()
{
Money money = new Money(20.678);
Assert.AreEqual(20.68,money.Amount);
Assert.AreEqual(2068,money.Cents);
}
Может ли этот тест быть сгенерирован? Нет:) 95% тестов в моих проектах проверяют бизнес-логику и не могут быть сгенерированы.
Pex (особенно в паре с Moles) может дать 100% покрытие кода, но высокий коэффициент покрытия кода тестового набора никогда не указывает, что код хорошо протестирован - он дает ложную уверенность в том, что все протестировано. И это очень опасно.
Итак, вопрос в том, действительно ли полезен Pex-инструмент Pex?