Что касается классического тестового шаблона Arrange-Act-Assert, я часто обнаруживаю, что добавляю встречное утверждение, которое предшествует закону. Таким образом, я знаю, что передающее утверждение действительно проходит в результате действия.Должно ли это быть «Arrange-Assert-Act-Assert»?
Я думаю, что это похоже на красный в red-green-refactor, где только если я видел красную полосу в ходе моего тестирования, я знаю, что зеленый бар означает, что я написал код, который имеет значение. Если я напишу прохождение теста, то любой код удовлетворит его; аналогично, в отношении Assange-Assert-Act-Assert, если мое первое утверждение не удастся, я знаю, что любой Закон прошел бы окончательное Assert - так, чтобы он фактически не проверял ничего о Законе.
Выполняют ли ваши тесты этот образец? Почему или почему нет?
Обновление Уточнение: исходное утверждение, по сути, является противоположным окончательному утверждению. Это не утверждение, что Аранж работал; это утверждение, что Закон еще не сработал.
Спасибо, что вернулись с примером, Карл. Ну, в красной части цикла TDD, пока encompass() действительно что-то не сделает; первое утверждение бессмысленно, это всего лишь дублирование второго. В зеленом цвете он начинает полезен. Это приобретает смысл во время рефакторинга. Было бы неплохо иметь UT-структуру, которая сделает это автоматически. – philant
Предположим, что TDD, что класс Range, не будет ли еще один неудачный тест тестирования Range ctor, когда вы его сломаете? – philant
@philippe: Я не уверен, что понимаю вопрос. Конструктор Range и включает() имеют свои собственные модульные тесты. Не могли бы вы уточнить, пожалуйста? –