Ich lerne gerade etwas über TDD und versuche es in meinen persönlichen Projekten in die Praxis umzusetzen. Bei vielen dieser Projekte habe ich auch die Versionskontrolle intensiv genutzt. Ich interessiere mich für das Zusammenspiel dieser beiden Tools in einem typischen Arbeitsablauf, insbesondere wenn es um die Maxime geht, Commits klein zu halten. Hier sind einige Beispiele, die mir einfallen:
Ich starte ein neues Projekt und schreibe einen einfachen Test, um eine noch nicht vorhandene Klasse zu erstellen. Sollte ich den Test durchführen, bevor ich die Klasse schreibe, obwohl der Test nicht kompiliert wird? Oder sollte ich die Mindestmenge an Code herausfiltern, die erforderlich ist, damit der Test vor dem Festschreiben kompiliert wird?
Ich finde einen Fehler und schreibe einen Test, um ihn neu zu erstellen. Soll ich den fehlgeschlagenen Test festschreiben oder die Fehlerbehebung implementieren und dann festschreiben?
Dies sind die beiden Beispiele, die sofort in den Sinn kommen. Fühlen Sie sich frei, zusätzliche Beispiele in Ihrer Antwort anzugeben.
Bearbeiten:
In beiden Beispielen bin ich davon ausgegangen, dass ich unmittelbar nach dem Schreiben des Tests Code schreiben werde, um den Test zu bestehen. Es kann auch eine andere Situation eintreten: Ich arbeite mehrere Stunden mit TDD an einem Projekt, ohne dies zu bestätigen. Wenn ich mich endgültig festgelegt habe, möchte ich meine Arbeit in kleine Stücke aufteilen. (Git macht dies relativ einfach, selbst wenn Sie nur einige der Änderungen in einer einzelnen Datei festschreiben möchten.)
Das bedeutet, dass es bei meiner Frage genauso darum geht, was zu begehen ist, wie darum, wann zu begehen ist.