Я рефакторинг огромного унаследованного кода класса. Рефакторинг (я полагаю) защищает это:
- написать тесты для унаследованного класса
- рефакторинг, черт возьми, из класса
Проблема: после того, как я проведу рефакторинг класса, мои тесты на шаге 1 нужно будет изменить. Например, то, что раньше было в унаследованном методе, теперь может быть отдельным классом. То, что было одним методом, теперь может быть несколькими методами. Весь ландшафт унаследованного класса может быть стерт с лица земли во что-то новое, и поэтому тесты, которые я напишу на шаге 1, будут практически недействительными. По сути, я буду добавлять Шаг 3. переписать мои тесты обильно
Какова цель тогда писать тесты перед рефакторингом? Это больше похоже на академическое упражнение по созданию большей работы для себя. Сейчас я пишу тесты для метода и узнаю больше о том, как тестировать вещи и как работает старый метод. Это можно узнать, просто прочитав сам унаследованный код, но написание тестов - это почти то же самое, что потирать нос, а также документировать эти временные знания в отдельных тестах. Таким образом, у меня почти нет выбора, кроме как узнать, что делает код. Я сказал здесь временно, потому что я буду рефакторировать чертовски код, и вся моя документация и тесты в значительной степени будут недействительными, за исключением того, что мои знания останутся и позволят мне быть более свежим в рефакторинге.
Это реальная причина писать тесты перед рефакторингом - чтобы помочь мне лучше понять код? Должна быть другая причина!
Пожалуйста, объясни!
Замечания:
Есть такая запись: есть ли смысл писать тесты для унаследованного кода, когда нет времени для полного рефакторинга? но там написано «написать тесты перед рефакторингом», но не сказано «почему» или что делать, если «написание тестов» кажется «занятой работой, которая скоро будет уничтожена»