Domanda
Il test unitario è, in parole povere, testare bit del tuo codice in isolamento con il codice di test.I vantaggi immediati che mi vengono in mente sono:
- L'esecuzione dei test diventa automatizzabile e ripetibile
- Puoi eseguire test a un livello molto più granulare rispetto ai test punta e clicca tramite una GUI
La mia domanda è: quali sono le attuali "migliori pratiche" in termini di strumenti, nonché quando e dove utilizzare i test unitari come parte della codifica quotidiana?
Cerchiamo di essere in qualche modo indipendenti dalla lingua e di coprire tutte le basi.
Soluzione
Ok, ecco alcune migliori pratiche da parte di qualcuno che non esegue i test unitari quanto dovrebbe... tosse.
- Assicurati che i tuoi test siano testati unocosa e una cosa soltanto.
- Scrivi test unitari mentre procedi.Preferibilmente Prima scrivi il codice su cui stai testando.
- Non eseguire test unitari sulla GUI.
- Separa le tue preoccupazioni.
- Minimizza le dipendenze dei tuoi test.
- Comportamento finto con schernisce.
Altri suggerimenti
Potresti voler dare un'occhiata TDD su tre schede E Tre schede per ricordare facilmente l'essenza dello sviluppo basato sui test:
Carta n. 1.Le tre leggi dello zio Bob
- Non scrivere codice di produzione se non per superare un test fallito.
- Scrivi solo un test sufficiente a dimostrare un fallimento.
- Scrivi solo il codice di produzione sufficiente per superare il test.
Carta n. 2:PRIMI PRINCIPI
- Veloce:Incredibilmente veloce, come in centinaia o migliaia al secondo.
- Isolato:Il test isola chiaramente un guasto.
- Ripetibile:Posso eseguirlo ripetutamente e ogni volta passerà o fallirà allo stesso modo.
- Autoverifica:Il test è inequivocabilmente superato-fallito.
- tempestivo:Prodotto in sincronia con piccole modifiche al codice.
Carta n. 3:Nucleo del TDD
- Rosso:la prova fallisce
- Verde:superamento del test
- Refactoring:codice e test puliti
Il cosidetto xUnità quadro è ampiamente utilizzato.È stato originariamente sviluppato per Smalltalk come SUnit, si è evoluto in JUnit per Java e ora ha molte altre implementazioni come NUnit per .Net.È quasi uno standard de facto: se dici che stai utilizzando test unitari, la maggior parte degli altri sviluppatori presumerà che intendi xUnit o simili.
Una grande risorsa per le "migliori pratiche" è il file Blog sui test di Google, ad esempio un post recente su Scrittura di codice verificabile è una risorsa fantastica.Nello specifico, i post settimanali della serie "Test sulla toilette" sono ottimi da pubblicare sul tuo cubo o toilette, così puoi sempre pensare ai test.
La famiglia xUnit è il pilastro dei test unitari.Sono integrati in Netbeans, Eclipse e molti altri IDE.Offrono una soluzione semplice e strutturata per i test unitari.
Una cosa che cerco sempre di fare quando scrivo un test è ridurre al minimo l'utilizzo di codice esterno.Con questo intendo:Cerco di ridurre al minimo il codice di installazione e smontaggio per il test e cerco di evitare il più possibile l'utilizzo di altri moduli/blocchi di codice.Un codice modulare ben scritto non dovrebbe richiedere troppo codice esterno nella sua configurazione e smontaggio.
NUnit è un ottimo strumento per qualsiasi linguaggio .NET.
I test unitari possono essere utilizzati in diversi modi:
- Prova la logica
- Aumentare la separazione delle unità di codice.Se non puoi testare completamente una funzione o una sezione di codice, significa che le parti che la compongono sono troppo interdipendenti.
- Promuovi lo sviluppo, alcune persone scrivono test Prima scrivono il codice da testare.Questo ti costringe a pensare a cosa vuoi che sia il codice Fare, e poi ti dà una linea guida precisa su quando lo avrai raggiunto.
Non dimenticare il supporto per il refactoring.ReSharper su .NET fornisce il refactoring automatico e soluzioni rapide per il codice mancante.Ciò significa che se scrivi una chiamata a qualcosa che non esiste, ReSharper ti chiederà se vuoi creare il pezzo mancante.