Il vero progetto mi ha mostrato che non è possibile scrivere unit test e quindi l'integrazione e anche la direzione opposta è sbagliata :-) Quindi, di solito scrivo unit test insieme a quelli di integrazione.
Perché? Fammi scrivere come vedo entrambi i tipi di test:
Test unitari - Oltre a Wikipedia e tutte le informazioni note, i test unitari ti aiutano a restringere il design , migliorare il modello, le relazioni. Il flusso è semplice: una volta che inizi a digitare un nuovo progetto / nuovo componente, la maggior parte delle volte stai realizzando una sorta di PoC . Quando hai finito, hai sempre metodi lunghi, classi lunghe, metodi e classi non coerenti, ecc.
I test unitari aiutano a rimuovere questi problemi come quando si eseguono test di unità reali utilizzando le classi mock (senza dipendenza da altri componenti) sopra descritte non sono verificabili. Il segno di base del codice non verificabile è una parte beffarda dei test perché sei costretto a deridere molte dipendenze (o situazioni)
Test di integrazione - test corretti e funzionanti ti dicono che il tuo nuovo componente (o componenti) lavora insieme o con altri componenti - questa è la definizione normale. Ho scoperto che i test di integrazione aiutano principalmente a definire il flusso su come utilizzare il componente dal lato consumatore .
Questo è davvero importante perché a volte ti dice che la tua API non ha senso dall'esterno.
Bene, cosa succede una volta che ho scritto unit test e test di integrazione in seguito?
Ho preso lezioni carine, design chiaro, buon costruttore, metodi brevi e coerenti, predisposto per l'IoC ecc. Una volta che ho dato la mia classe / API a un consumatore, ad esempio uno sviluppatore del team di integrazione o GUI, non è stato in grado di usare la mia API perché sembra non logico , strano. Era solo confuso. Quindi ho riparato l'API in base al suo punto di vista, ma ha anche richiesto di riscrivere molti test perché sono stato spinto a cambiare i metodi e talvolta anche il flusso su come utilizzare l'API.
Bene, cosa succede dopo aver scritto i test di integrazione e i test unitari in seguito?
Ho il flusso esatto, buona usabilità. Quello che ho anche sono grandi classi, codice non coerente, nessuna registrazione, metodi lunghi. Codice spaghetti
Qual è il mio consiglio?
Ho imparato il seguente flusso:
- Sviluppa lo scheletro di base del tuo codice
- Scrivi test di integrazione che diano se ha senso dal punto di vista del consumatore. Il caso d'uso di base è abbastanza per ora. Il test ovviamente non funziona.
- Scrivi il codice insieme ai test unitari per ogni classe.
- Scrivi il resto / mancante dei test di integrazione. Sarebbe meglio implementare questi test entro # 3 su come stai migliorando il tuo codice.
Si noti che ho fatto una piccola presentazione sui test di unità / integrazione, vedere la diapositiva n. 21 in cui è descritto lo scheletro.