Attualmente sto imparando il TDD e sto provando a metterlo in pratica nei miei progetti personali. Ho anche ampiamente utilizzato il controllo delle versioni su molti di questi progetti. Sono interessato all'interazione di questi due strumenti in un flusso di lavoro tipico, soprattutto quando si tratta di massimizzare gli impegni. Ecco alcuni esempi che vengono in mente:
Inizio un nuovo progetto e scrivo un semplice test per creare una classe ancora inesistente. Devo eseguire il test prima di scrivere la classe anche se il test non viene nemmeno compilato? O dovrei stub fuori la quantità minima di codice necessario per compilare il test prima di eseguire il commit?
Trovo un bug e scrivo un test per ricrearlo. Devo eseguire il test non riuscito o implementare la correzione dei bug e quindi eseguire il commit?
Questi sono i due esempi che mi vengono subito in mente. Sentiti libero di fornire ulteriori esempi nella tua risposta.
Modificare:
Ho ipotizzato in entrambi gli esempi che immediatamente dopo aver scritto il test scriverò il codice per far passare il test. Potrebbe anche verificarsi un'altra situazione: lavoro su un progetto usando TDD per diverse ore senza impegnarmi. Quando finalmente mi impegno, voglio dividere il mio lavoro in piccoli pezzi. (Git lo rende relativamente semplice anche se si desidera voler impegnare solo alcune delle modifiche in un singolo file.)
Ciò significa che la mia domanda riguarda tanto quanto cosa commettere quanto quanto quando commettere.