Я написал этот класс, который делает несколько вещей (возможно, это является нарушением принципа единой ответственности). Теперь я понимаю, что какой-то другой части проекта нужна часть этой логики, и способ, которым я собираюсь это представить, состоит в том, чтобы извлечь класс из моей первоначальной тестируемой системы.
Я ожидаю, что смогу сделать это без изменения какого-либо тестового кода, но когда я закончу, вы можете утверждать, что тест больше не является модульным тестом. Это будет тестирование исходного класса и класса, который я извлек. Другими словами, у меня будет один тестовый случай, но две тестируемые системы.
Должен ли я выполнить рефакторинг своего тестового кода после того, как я закончу? IE: создать ExtractedClassTest и перенести в него все соответствующие тесты из OriginalClassTest? Кажется, что это может быть немного рискованно: я могу потерять некоторую информацию в процессе, это может быть не так просто, как перенести тест, и я бы в конечном итоге переписал какой-то тестовый код, который, как я знаю, работал, но может больше не работать, и т.п.
С другой стороны, если я оставлю OriginalClassTest как есть, я вижу, что это проблема с тестовым обслуживанием. Будет немного странно найти тесты ExtractedClass. Ваше первое впечатление будет, что он не существует. Со временем при большом количестве рефакторингов производственного кода это может стать серьезной проблемой.
Я новичок в TDD, поэтому я хотел бы получить совет эксперта. Благодарность!
источник