Se ho già un test di integrazione per il mio programma e sono passati tutti, allora ho la sensazione che funzionerà. Allora quali sono i motivi per scrivere / aggiungere test unitari? Dato che devo già scrivere i test di integrazione, mi piacerebbe solo scrivere un test unitario per le parti che non sono coperte dai test di integrazione.
Quello che so il vantaggio del test unitario sul test di integrazione sono
- Piccolo e quindi veloce da eseguire (ma l'aggiunta di una nuova unità per testare qualcosa è già stata testata da test di integrazione significa che la mia tuta di test totale diventa sempre più lunga da eseguire)
- Individua i bug più facilmente perché verifica solo una cosa (ma posso iniziare a scrivere test delle unità per verificare ogni singola parte quando il mio test di integrazione ha avuto esito negativo)
- Trova bug che potrebbero non essere scoperti nel test di integrazione. per esempio. bug mascheramento / sfalsamento. (ma se la mia integrazione verifica tutti i passaggi, il che significa che il mio programma funzionerà anche alcuni bug nascosti. Quindi trovare / correggere questi bug non sono veramente una priorità alta a meno che non inizino a interrompere futuri test di integrazione o causare problemi di prestazioni)
E vogliamo sempre scrivere meno codice, ma i test di unità di scrittura richiedono molto più codice (principalmente l'impostazione di oggetti fittizi). La differenza tra alcuni dei miei test unitari e test di integrazione è che nei test unitari, uso l'oggetto mock, e nei test di integrazione, io uso l'oggetto reale. Che hanno un sacco di duplicati e non mi piace il codice duplicato, anche nei test perché questo aggiunge un sovraccarico per modificare il comportamento del codice (lo strumento Refactor non può fare tutto il lavoro tutto il tempo).