Escribí esta clase que hace algunas cosas (tal vez esto es una violación del Principio de Responsabilidad Única). Ahora me doy cuenta de que otra parte del proyecto necesita una parte de esa lógica y la forma en que la expondré es extraer una clase de mi Sistema bajo prueba original.
Anticipo poder hacer esto sin tener que cambiar ningún código de prueba, pero cuando termine, podría argumentar que la prueba ya no es una prueba unitaria . Probará la clase original y la clase que he extraído. En otras palabras, tendré un caso de prueba, pero dos sistemas bajo prueba.
¿Se supone que debo refactorizar mi código de prueba una vez que haya terminado? IE: ¿Crear un ExtractedClassTest y mover todas las pruebas relevantes de OriginalClassTest a él? Parece que podría ser un poco arriesgado: puedo perder algo de cobertura en el proceso, puede que no sea tan simple como mover una prueba y terminaría reescribiendo un código de prueba que sé que solía funcionar, pero que ya no funciona, etc.
Por otro lado, si dejo el OriginalClassTest tal como está, puedo ver que se trata de un problema de mantenimiento de prueba. Será un poco confuso encontrar dónde están las pruebas de ExtractedClass. Su primera impresión será que no existe. Con el tiempo, con muchas refactorizaciones de código de producción, esto podría convertirse en un problema grave.
Soy nuevo en TDD, así que me gustaría el consejo de un experto. ¡Gracias!
fuente