У вас есть две вещи, смешанные здесь.Разработка через тестирование и модульное тестирование.Вам не нужно делать их оба - сначала написание интеграционных тестов называется ATDD или BDD, а написание модульных тестов после того, как код просто пишет модульные тесты, - но они очень хорошо работают вместе.
Модульное тестирование - это тестирование небольших фрагментов кода (обычно это единственный метод, но модуль - гибкий зверь) и тестирование его изолированно.Если взять наши первые два метода, описанные выше, это изменит его на:
- Я заканчиваю [раздел a] большого скрипта,
- Я пишу тест, который попадает только в ту область, которую я считаюпроблематично
- Выполнить тесты
Это означает, что вы не взламываете свой скрипт и, следовательно, не рискуете забыть раскомментировать что-то.У вас также есть тест, который вы можете запустить снова.Это означает, что вы можете быть достаточно уверены, что новое изменение не приведет к повторному включению этой ошибки.И это большое дело;тест, который проводится только один раз, бесполезен.Тесты должны быть повторяемыми, и это не дает вам взломать разделы вашего кода.
Разработка через тестирование - это все о написании тестов перед написанием кода.Это добавляет большие накладные расходы, но когда вы думаете, что дешевле всего исправить ошибку?Как вы пишете этот раздел кода или месяцев спустя?Это основная причина, по которой я использую TDD.Я получаю отзывы о своем коде, когда я пишу его.Гораздо меньше - отправлять его в команду тестирования, ждать неделю, пока они проведут ряд тестов, а затем придется извлечь другую пользовательскую историю, чтобы попытаться понять, что, черт возьми, я думал неделю назад.
Они также означают, что вы можете проводить рефакторинг и быть уверенным, что вы не просто все продумали, но и заставили задуматься о дизайне своего кода, выступили в роли документации и других прелестей.Но для меня главной особенностью TDD является немедленная обратная связь.