Здравствуйте, SergeyT., Вы писали:
ST>Ну и не забывай о рефакторинге: без тестов (юнит и интеграционных) мы не можем зафиксировать текущее поведение, чтобы изменить ее внутреннюю реализацию.
ST>6. Юнит-тесты — это — это необходимый background для рефакторинга. Без них рефакторинг превращается в серьезную авантюру.
Тут не без нюансов. Если в рамках рефакторинга меняется дизайн приложения (что чаще всего и бывает), то это требует изменений в юнит-тестах. И обещанных гарантий фиксации поведения уже нет.
На одном из проектов нам в наследство досталась куча сильносвязного кода с багами и без тестов. Было решено сделать глубокий рефакторинг. Из соображений "зафиксировать текущее поведение" заказчик решил покрыть все тестами. Более бессмысленного занятия я не припомню...