Domanda

Sì, ho letto le "Domande correlate" nella casella sopra dopo aver digitato this =). Non mi hanno ancora aiutato quanto avrei voluto, poiché capisco qual è la differenza tra i due: non sono sicuro di averne bisogno nel mio caso specifico.

Quindi ho un'applicazione completamente testata (semplice e piccola). Ho una classe 'Job' con un solo metodo Run () pubblico + ctors che accetta un foglio di calcolo Excel come parametro, estrae i dati, controlla il database per vedere se abbiamo già quei dati e, in caso contrario, fa una richiesta a un fornitore di terze parti, accetta tale risposta, la inserisce nel database e quindi completa il processo (nuovo aggiornamento db)

Ho IConnection per parlare con il fornitore, IParser per analizzare i file excel / fornitore, IDataAccess per fare tutto l'accesso al database. La mia classe Job è lean & amp; significa e non fa molta logica, anche se in realtà sta facendo tutta della logica, in realtà sta solo "concatenando" i dati agli oggetti compositi ...

Quindi tutti gli oggetti compositi vengono testati in unità, incluso il DAL, e anche il mio metodo Run () nella classe Job è testato in unità usando i mock per tutti i possibili percorsi di codice.

Quindi - devo fare qualsiasi tipo di test di integrazione a questo punto, a parte eseguire l'app per vedere se funziona? I miei test del metodo Run () con mock sono considerati i miei test di integrazione? O il mio test di integrazione dovrebbe usare istanze reali invece di simulazioni, e quindi asserire i valori del database alla fine, in base all'input noto di fogli di calcolo Excel? Ma è quello che stanno già facendo tutti i miei test unitari (solo in luoghi separati, e il test Run simulato assicura che quei posti 'si colleghino')! Seguendo la metodologia DRY, non vedo la necessità di fare un test di integrazione qui ...

Mi sto perdendo qualcosa di ovvio ragazzi? Mille grazie ancora ...

È stato utile?

Soluzione

Penso che la cosa più grande che ti manca sia il comportamento reale dei tuoi sistemi esterni. Sebbene i test unitari possano certamente affermare che i singoli passaggi eseguono l'azione prevista, fanno ben poco per rivelare i problemi di runtime che possono sorgere quando si accede a sistemi esterni. I tuoi sistemi esterni possono contenere anche dati che non conosci.

Quindi sì, penso che tu abbia bisogno di entrambi. Non è necessario essere necessariamente ugualmente dettagliati in entrambi i test. A volte puoi semplicemente lasciare che il test di integrazione sia un test del fumo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top