Attualmente sto studiando come dovremmo eseguire i nostri test in un progetto imminente. Per trovare i bug all'inizio del processo di sviluppo, gli sviluppatori scriveranno test di unità prima del codice effettivo (TDDish). I test unitari si concentreranno, come dovrebbero, sull'unità (un metodo in questo caso) in isolamento, quindi le dipendenze saranno prese in giro ecc.Transizione efficace dalle prove delle unità ai test di integrazione
Ora, vorrei anche testare queste unità quando interagiscono con altre unità e stavo pensando che ci dovrebbe essere una buona pratica efficace per fare questo poiché i test unitari sono già stati scritti. Il mio pensiero è che i test unitari saranno riutilizzati ma gli oggetti derisi saranno rimossi e sostituiti con quelli reali. Le idee diverse che ho adesso sono:
- Utilizzare una bandiera globale in ciascuna classe di test che decida se utilizzare o meno oggetti fittizi. Questo approccio richiederà diverse istruzioni
if
- Utilizzare una classe factory che crea un "instanceWithMocks" o "instanceWithoutMocks". Questo approccio potrebbe essere problematico per i nuovi sviluppatori da utilizzare e richiede alcune classi aggiuntive
- Separare i test di integrazione dai test di unità in classi diverse. Ciò però richiede un sacco di codice ridondante e mantenere i casi di test sarà il doppio del lavoro
Il mio modo di vedere tutti questi approcci hanno vantaggi e svantaggi. Quale di questi sarebbe preferibile e perché? E c'è un modo migliore per passare efficacemente dai test unitari ai test di integrazione? O è fatto di solito in qualche altro modo?