Napisałem tę klasę, która robi kilka rzeczy (być może jest to naruszenie zasady pojedynczej odpowiedzialności). Teraz zdaję sobie sprawę, że jakaś inna część projektu potrzebuje fragmentu tej logiki, a sposób, w jaki ją ujawnię, polega na wyodrębnieniu klasy z mojego oryginalnego Testowanego Systemu.
Spodziewam się, że będę w stanie to zrobić bez zmiany kodu testowego, ale kiedy skończę, możesz argumentować, że test nie jest już testem jednostkowym . Będzie testować klasę oryginalną i klasę, którą wyodrębniłem. Innymi słowy, będę miał jeden przypadek testowy, ale dwa systemy będą testowane.
Czy powinienem ponownie kodować kod testowy po zakończeniu? IE: Utworzyć ExtractedClassTest i przenieść do niego wszystkie odpowiednie testy z OriginalClassTest? Wydaje się, że może to być trochę ryzykowne: mogę stracić trochę zasięgu w tym procesie, może to nie być tak proste jak przeniesienie testu, a w końcu przepisałbym kod testowy, który kiedyś działał, ale może już nie, itp.
Z drugiej strony, jeśli pozostawiam OriginalClassTest bez zmian, widzę, że jest to problem z utrzymaniem testu. To będzie trochę mylące, aby dowiedzieć się, gdzie są testy ExtractedClass. Twoje pierwsze wrażenie będzie takie, że nie istnieje. Z biegiem czasu, przy wielu refaktoryzacjach kodu produkcyjnego, może to stać się poważnym problemem.
Jestem nowy w TDD, dlatego potrzebuję porady eksperta. Dzięki!
źródło