2010-09-13 19 views
9

Il generatore di test unità integrato (VS) per le classi target dovrebbe essere usato o devo imparare a scrivere un test unitario? E qual è questa cosa "Mock"? Lo sento ripetutamente ma a nessuno interessa dare una buona spiegazione.C# - Test unità, Mock?

Grazie in anticipo.

+1

Era divertente. –

+0

possibile duplicato di [Che cosa è Mocking?] (Http://stackoverflow.com/questions/2665812/what-is-mocking) – nawfal

risposta

16

È necessario imparare a scrivere test di unità per conto proprio. Inizia con il piede giusto con una buona comprensione della terminologia che molte persone commettono errori riguardanti:

Test di unità: test di una singola unità di codice, test atomico molto piccolo.

Test di integrazione: test di più unità di codice integrate insieme, per passare attraverso i diversi livelli e assicurarsi che si stiano utilizzando correttamente. Questi dovrebbero essere fatti dopo che i test unitari hanno verificato che le singole unità funzionano in modo indipendente. Molte persone si riferiscono erroneamente a questi come test unitari.

Test di verifica costruito: test del prodotto creato distribuendolo ed eseguendo test che interagiranno con esso nel modo in cui lo farebbe un utente. Anche erroneamente indicati come unit test frequentemente. Questi sono i test più completi e completi, spesso eseguiti manualmente testando i team anziché essere automatizzati.

Ecco il quickstart per MOQ, che è un quadro di scherno: https://github.com/Moq/moq4/wiki/Quickstart

Mocking è l'atto di prendere un piccolo pezzo di codice che potrebbe dipendere da altre cose, beffardo quelle altre cose in modo che è possibile controllare il circostanze che circondano il pezzo di codice che vuoi testare.

Lo scopo del mocking è l'atomicità nei test. Ti permette di testare solo il singolo pezzo di codice che vuoi, senza che il test sia influenzato da errori nei pezzi di codice dipendenti. Anche il mocking ti dà la possibilità di fabbricare una varietà di scenari per testare i casi limite di ciascun pezzo di codice.

Mocking è generalmente propose per la creazione di confini di tutto il codice di destinazione nel test di unità, anche se non è raro utilizzare in test di integrazione troppo per la fabbricazione di una risorsa che agisce come il seme per la catena di codice integrata ci si rivolge.

+0

Questi "mock" dovrebbero essere salvati in una classe per se stessi o sono solo temporanei per testare alcuni codice fuori e quindi rimuovere il/i finto/i in seguito? – ebb

+0

@ebb: Questo è un modo vecchio stile scolastico per farlo e funziona bene, ma è lì che entrano in gioco le strutture di derisione, che ti permettono di prendere in giro gli oggetti senza effettivamente creare la classe di simulazione da usare. Tutto ciò che deride, tuttavia, dipende dall'avere una relazione polimorfica con gli oggetti che si sta fingendo di essere. Quindi hai bisogno di un'interfaccia o di una classe base da condividere, o di metodi virtuali per sovrascrivere gli oggetti che fingresti di essere. –

+1

Cosa dovrei imparare prima .. Mocking o Unit test? – ebb