Я и коллега начинаем новый проект и пытаемся в полной мере использовать преимущества TDD. Мы все еще выясняем все концепции, касающиеся модульного тестирования, и пока основываем их прежде всего на других примерах.
Мой коллега недавно поставил под сомнение точку зрения помощников по синтаксису NUnit, и я изо всех сил пытаюсь объяснить их преимущества (поскольку я сам по-настоящему не понимаю этого, за исключением того, что моя интуиция говорит, что они хорошие!). Вот пример утверждения:
Assert.That(product.IsValid(), Is.False);
Для меня это имеет полный смысл, мы говорим, что ожидаем, что значение product.IsValid()
будет false
. С другой стороны, мой коллега предпочел бы, чтобы мы просто написали:
Assert.That(!product.IsValid());
Он говорит ему, что это имеет больше смысла, и он может читать это легче.
Пока единственное, с чем мы можем согласиться, это то, что вы, скорее всего, получите более полезный результат, если тест не пройден по предыдущему, но я думаю, что должно быть лучшее объяснение. Я просмотрел некоторую информацию о помощниках синтаксиса (http://nunit.com/blogs/?p=44), и они имеют смысл, но я не совсем понимаю концепцию ограничений, отличную от того, что они «чувствуют» правильно.
Интересно, кто-нибудь мог бы объяснить, почему мы используем концепцию ограничений и почему они улучшают приведенные выше примеры модульных тестов?
Спасибо.