Actualmente estoy aprendiendo sobre TDD y estoy tratando de ponerlo en práctica en mis proyectos personales. También he usado el control de versiones ampliamente en muchos de estos proyectos. Estoy interesado en la interacción de estas dos herramientas en un flujo de trabajo típico, especialmente cuando se trata de la máxima para mantener pequeños compromisos. Aquí hay algunos ejemplos que vienen a la mente:
Comienzo un nuevo proyecto y escribo una prueba simple para crear una clase que aún no existe. ¿Debo confirmar la prueba antes de escribir la clase aunque la prueba ni siquiera se compila? ¿O debería eliminar la cantidad mínima de código que se necesita para que la prueba se compile antes de comprometerse?
Encuentro un error y escribo una prueba para recrearlo. ¿Debo confirmar la prueba fallida o implementar la corrección de errores y luego confirmar?
Estos son los dos ejemplos que vienen inmediatamente a la mente. Siéntase libre de proporcionar ejemplos adicionales en su respuesta.
Editar:
Supuse en ambos ejemplos que inmediatamente después de escribir la prueba escribiré el código para que la prueba pase. También podría surgir otra situación: trabajo en un proyecto usando TDD durante varias horas sin comprometerme. Cuando finalmente me comprometo, quiero dividir mi trabajo en pequeños trozos. (Git hace que esto sea relativamente fácil incluso si desea confirmar solo algunos de los cambios en un solo archivo).
Esto significa que mi pregunta es tanto sobre qué comprometerse como cuándo comprometerse.