In TDD scrivi la più piccola unità di codice per passare il test.
Ad esempio, se si costruisce un oggetto Stack
, si desidera testare i metodi push
e pop
. Questo è abbastanza semplice. Quelle sono entrambe piccole unità che possono essere testate in isolamento. Nessuna dipendenza esterna. Riguarda quell'oggetto e quello che fa.
Questo non è il mondo però. La maggior parte degli oggetti dipende da molti altri oggetti. Questi oggetti potrebbero essere riempiti da una chiamata di servizio o da query DB.
So che l'uso di Mocks
, Stubs
e Fakes
può aiutare qui ma ha anche limiti e insidie come il mocking troppo che essenzialmente lascia passare il test indipendentemente da cosa.
Esistono anche test di integrazione che possono assicurare che i database e i servizi si integrino ancora come previsto, ma questo è un passo al di sopra dei test unitari dalla mia comprensione. Da quello che ho raccolto questo potrebbe essere in un ambiente di sviluppo su un locale.
Nel complesso sembrerebbe che l'atto di rimuovere queste dipendenze sia più lavoro di quanto valga quasi. Che potrebbe portare a suite di test troppo ingegnerizzate.
Modifica (incluso titolo)
Piuttosto che capire cos'è l'unità più piccola (il metodo ringrazia Robert) Sembra che la mia domanda sia più:
- Dove iniziano i test unitari e l'integrazione?
- Ad esempio, un test di integrazione è stato scritto dallo sviluppatore come un test unitario e poi eseguito sul locale con una suite di test?
- Se questo è il caso, allora come può qualcuno distinguere tra un test unitario e test di integrazione o dovrebbe?
- I test unitari e di integrazione dovrebbero essere eseguiti contemporaneamente?