Se ho già un test di integrazione per il mio programma e tutti hanno superato, allora ho la sensazione che funzionerà. Quindi quali sono i motivi per scrivere / aggiungere test unitari? Dal momento che devo già scrivere i test di integrazione, mi piacerebbe solo scrivere unit test per le parti che non sono coperte dai test di integrazione.
Quello che so sono i vantaggi del test unitario rispetto al test di integrazione
- Piccolo e quindi veloce da eseguire (ma l'aggiunta di una nuova unità per testare qualcosa è già testata dal test di integrazione significa che la mia tuta di prova totale diventa più grande e più lunga da eseguire)
- Individuare il bug più facilmente perché verifica solo una cosa (ma posso iniziare a scrivere unit test per verificare ogni singola parte quando il mio test di integrazione fallisce)
- Trova bug che potrebbero non essere rilevati nel test di integrazione. ad es. mascheramento / compensazione di bug. (ma se i miei test di integrazione superano tutti, il che significa che il mio programma funzionerà anche se esistono alcuni bug nascosti. Quindi trovare / correggere questi bug non hanno la massima priorità a meno che non inizino a rompere i test di integrazione futuri o causare problemi di prestazioni)
E vogliamo sempre scrivere meno codice, ma i test delle unità di scrittura richiedono molto più codice (principalmente impostare oggetti finti). La differenza tra alcuni dei miei test unitari e dei test di integrazione è che nei test unitari utilizzo un oggetto simulato e nei test di integrazione utilizzo un oggetto reale. Che hanno molte duplicazioni e non mi piace il codice duplicato, anche nei test perché questo aggiunge sovraccarico per cambiare il comportamento del codice (lo strumento refactor non può fare tutto il lavoro tutto il tempo).