Estoy construyendo una nueva aplicación y tratando de adherirme al desarrollo de "probar primero" tan fielmente como pueda. Me encuentro en situaciones en las que necesito implementar/cambiar una característica que tiene el efecto de invalidar una cantidad de pruebas unitarias existentes. ¿Cómo debería lidiar con esto? Tal como lo veo, hay 3 opciones:¿Qué hacer cuando una nueva característica causa que las pruebas de unidades existentes se vuelvan inválidas?
actualizar o eliminar todo pruebas existentes para cumplir los nuevos requisitos de características (añadiendo más si es necesario), y luego implementar la función
Implementar el función primera, pruebas realizadas para ver los fallos, y actualizar o eliminar cualquier pruebas fallidas (añadir más si es necesario)
añadir nuevas pruebas para la nueva característica, implementar la función, ejecutar todas las pruebas para ver la edad en es un error, eliminar o actualización de las antiguas pruebas según sea necesario
La primera opción se adhiere a TDD, pero puede ser extremadamente contraproducente. La segunda opción es la más fácil, pero no estaría probando fielmente primero y es posible que no esté adecuadamente "cubierta". La tercera opción es un compromiso de ambos y atractivo hasta cierto punto, pero usted corre el riesgo de volver a escribir una prueba cuando podría haber actualizado una anterior.
No siento que tenga una estrategia clara aquí. ¿Qué haces en estas situaciones?
Esto es lo que hago cuando pienso en todo el código que probé que eventualmente entró en el cubo de basura: http://www.youtube.com/watch?v=tgBI3-q5COM – Will
Suena extraño que hacer un cambio (correctamente) podría romper varias pruebas unitarias. Uno o dos tal vez, pero varios? ¿Es posible que las pruebas de su unidad se superpongan demasiado? – Beta
@Beta, supongamos que agrega un requisito de que la implementación ahora requiere una clase dependiente adicional. Ahora sus otras pruebas no proporcionan una implementación simulada del objeto dependiente, de modo que cuando se ejecutan obtiene un montón de excepciones de referencia nula. Entonces necesitaría regresar y arreglar su código de configuración para que luego pasen. – tvanfosson