Robert C. Martin 'The Clean Coder', chapter 5 'Test Driven Development'
Per quel che vale, vedrai le stesse regole sul suo sito web: Tre regole del TDD .
Where is the place for refactoring?
Accade su una cadenza diversa. Vedi I cicli di TDD .
Second-by-Second nano-cycle: The Three Laws of TDD.
the goal is always to promote the line by line granularity that I experienced while working with Kent so long ago."
vs.
Minute-by-Minute: micro-cycle: Red-Green-Refactor
This cycle is typically executed once for every complete unit test, or once every dozen or so cycles of the three laws. The rules of this cycle are simple.
- Create a unit tests that fails
- Write production code that makes that test pass.
- Clean up the mess you just made.
Per un confronto, considera come Kent Beck ha descritto TDD in Sviluppo guidato da test .
- Quickly add a test
- Run all tests and see the new one fail
- Make a little change
- Run all tests and see them all succeed
- Refactor to remove duplication
In altre parole, ciò che Beck descrive è il flusso di lavoro Red-Green-Refactor - scrivi l'intero test. Questo introduce un sacco di errori del compilatore (perché gli esempi in quei giorni erano scritti in Java). Scrivi un po 'di codice per correggere ogni errore a turno. Ora hai un test fallito (ROSSO). Scrivi un po 'di codice in più per far passare il test. Ora hai un'implementazione che soddisfa tutti i tuoi test (VERDE). Ora ripulisci il pasticcio (REFATTORE).
Ciò che le tre leggi di TDD ti danno è un nano flusso di lavoro entro ROSSO-VERDE. Esegui il tick-tock tra la scrittura del codice di prova e la scrittura del codice di produzione, correggendo ogni errore così com'è, fino a quando l'implementazione non fornisce il comportamento corretto.
Da quello che posso dire, dove spicca il nanociclo è in quei posti dove si sta estendendo il sistema sotto test; aggiungendo un nuovo metodo o una nuova classe. Questi sono i casi in cui si vedono errori del compilatore che devono essere corretti. Nel caso in cui si stia creando un test per valutare un comportamento modificato, c'è poco da distinguere tra il nanociclo e la calibrazione del test.