Il progetto reale mi ha mostrato che non è possibile scrivere test unitari e quindi l'integrazione e anche la direzione opposta è sbagliata :-) Quindi, di solito scrivo unit test insieme a quelli di integrazione.
Perché? Lascia che scriva come vedo entrambi i tipi di test:
-
Test unitari - Oltre a Wikipedia e a tutte le informazioni conosciute, i test unitari ti aiutano a restringere il tuo design , a migliorare il tuo modello, le relazioni. Il flusso è semplice: una volta che inizi a digitare nuovo progetto / nuovo componente, la maggior parte del tempo stai facendo una specie di PoC . Quando hai finito, hai sempre metodi lunghi, classi lunghe, metodi e classi non coerenti, ecc.
I test unitari ti aiutano a rimuovere questi problemi come quando esegui test di unità reali usando le classi di mock (senza la dipendenza da altri componenti) sopra descritte non verificabili. Il segno base del codice non testabile è una grande parte di test di simulazione perché sei costretto a prendere in giro molte dipendenze (o situazioni)
-
Test di integrazione : test corretti e funzionanti ti dicono che il tuo nuovo componente (oi suoi componenti) funzionano insieme o con altri componenti - questa è la definizione normale. Ho trovato che i test di integrazione ti aiutano principalmente a definire flusso come utilizzare il componente da lato consumatore .
Questo è molto importante in quanto a volte ti dice che la tua API non ha senso da fuori.
Bene, cosa succede dopo aver scritto test unitari e test di integrazione più tardi?
Ho ottenuto ottime lezioni, un design chiaro, un buon costruttore, metodi brevi e coerenti, IoC ready ecc. Una volta che ho dato la mia classe / API ad un certo consumatore, ad es. sviluppatore dal team di integrazione o GUI, non è stato in grado di utilizzare la mia API in quanto sembra non logico, strano. Era solo confuso. Quindi ho riparato le API in base al suo punto di vista, ma ho anche dovuto riscrivere molti test perché sono stato spinto a cambiare i metodi ea volte anche il flusso su come utilizzare l'API.
Bene, cosa succede dopo aver scritto test di integrazione e unit test più tardi?
Ho ottenuto un flusso esatto, una 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 dicono se ha senso dal punto di vista del consumatore. Il caso d'uso di base è sufficiente 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 al punto # 3 come stai migliorando il tuo codice.
Tieni presente che ho fatto piccola presentazione a proposito test di unità / integrazione, vedere la diapositiva n. 21 in cui è descritto lo scheletro.