J'apprends actuellement le TDD et j'essaie de le mettre en pratique dans mes projets personnels. J'ai également beaucoup utilisé le contrôle de version sur bon nombre de ces projets. Je suis intéressé par l'interaction de ces deux outils dans un flux de travail typique, surtout quand il s'agit de maximiser les commits. Voici quelques exemples qui me viennent à l'esprit:
Je démarre un nouveau projet et j'écris un test simple pour créer une classe encore inexistante. Dois-je valider le test avant d'écrire la classe même si le test ne se compile même pas? Ou dois-je supprimer la quantité minimale de code nécessaire pour que le test soit compilé avant de valider?
Je trouve un bug et écris un test pour le recréer. Dois-je valider le test ayant échoué ou implémenter la correction de bogue, puis valider?
Ce sont les deux exemples qui me viennent immédiatement à l'esprit. N'hésitez pas à fournir des exemples supplémentaires dans votre réponse.
Modifier:
J'ai fait l'hypothèse dans les deux exemples qu'immédiatement après avoir écrit le test, j'écrirai du code pour réussir le test. Une autre situation pourrait également survenir: je travaille sur un projet en utilisant TDD pendant plusieurs heures sans m'engager. Quand je fais enfin des commits, je veux diviser mon travail en petits morceaux. (Git rend cela relativement facile même si vous souhaitez ne valider que certaines des modifications dans un seul fichier.)
Cela signifie que ma question porte autant sur ce qu'il faut engager que sur le moment de s'engager.