Il TDD ruota principalmente attorno ai test unitari, questa risposta lo coprirà.
Perché realizzi applicazioni? Li fai vedere che C # funziona bene, o li fai per risolvere un problema presentato dal tuo cliente (tieni presente che a volte il cliente potrebbe essere anche tu?)
Se non sei uno sviluppatore .NET che lavora per la società Microsoft e sei effettivamente responsabile della manutenzione del linguaggio C #, è quasi sempre il secondo caso. Stai provando a risolvere un problema, un problema che ha alcune regole.
Le regole presentate sono la tua logica aziendale, il tuo dominio. Una volta iniziato a lavorare sul tuo dominio, questo è l'ultimo momento in cui dovresti iniziare a scrivere test.
I più recenti? Sì. Parlando da una posizione di uno sviluppatore PHP senior, anche se è bello che PHP ti permetta di fare un sacco di cose, un linguaggio compilato non (come restituire due oggetti completamente diversi da un metodo), porta a un codice errato. Quindi, in molti casi, è meglio scrivere semplicemente il livello del database e non dipendere da una soluzione già esistente con metodi statici, ecc. Se costruisci questo livello, potresti prendere in considerazione anche la scrittura di test per questo, per assicurarti che cosa ha scritto opere.
In generale, non è mai troppo presto per iniziare a scrivere test di unità, ma c'è un punto in cui diventa troppo tardi e inutile. Come un'unità che testa i tuoi controllori. Ho visto persone farlo e non è quello che dovrebbe fare il test unitario. I tuoi controller sono una procedura, che contiene fabbriche per servizi, istanziali, che funzionano con i tuoi oggetti di dominio, non sono unità. Se vuoi testare i tuoi controller, usa invece suite di test di integrazione .
Che cosa dovrebbe essere sempre testato allora?
Vuoi avere test unitari per il tuo dominio, la tua logica aziendale. Se hai questo e le tue regole aziendali sono davvero lì, non devi preoccuparti del resto dell'applicazione, poiché dovrebbe eseguire solo operazioni CRUD di base su dati, che è valido (grazie per test e buoni modelli di dominio).
TDD Dal punto di vista del ciclo di vita
TDD significa che scrivi prima i test e poi scrivi il codice. Quando lavori su un progetto, passi attraverso diverse fasi.
-
Scegliere la tecnologia giusta : non sai quale linguaggio di programmazione sceglierai, ma non puoi semplicemente scrivere test.
-
Scegli il tuo modello architettonico : hai scelto il linguaggio di programmazione, ma non hai idea di come sarà strutturato il tuo progetto. Saranno moduli, servizi, MVC? Nel tuo caso è molto probabile che sia il pattern MVVM. Tutta la tua architettura è considerata un'unità? Io non la penso così Non è necessario testare l'architettura dell'applicazione.
-
Progettazione del livello del dominio : questa è la parte in cui i requisiti funzionali e non funzionali dell'utente sono accompagnati dalle regole del client e vengono implementati. Prima di questa fase, devi scrivere test e quindi fornire l'implementazione per farli passare.
- (facoltativo) Progettazione di servizi, che utilizzano i tuoi modelli di dominio : puoi creare servizi unendo più operazioni di dominio in un unico processo, proprio come una facciata. Puoi scrivere dei test prima di progettare questi servizi, ma è un'attività facoltativa.
Come detto prima, per assicurarti che la tua applicazione (la parte del cablaggio) funzioni come previsto, dovresti utilizzare i test di integrazione invece dei test delle unità.