Comprensione del concetto di test delle unità

5

Ho appena iniziato a scrivere test unitari e non sono sicuro che lo farò nel modo giusto. Dovrei testare ogni classe "rimuovendo le dipendenze"? In altre parole, test dell'unità significa: "testare parte di un codice con l'assunto che le dipendenze fornite ad altri moduli siano corrette e testare queste dipendenze come moduli singoli più tardi in altre classi di test unitarie"?

Ad esempio, scrivo un'applicazione WinRT in modalità Model-View-ViewModel e ho la classe MainViewModel. Questa classe ha dipendenza da IDataRepository che viene iniettata nel costruttore. MainViewModel è responsabile della gestione dei comandi e del collegamento del modello con la vista. MainViewModel ha comandi come CopyItems , LoadData ecc che si affidano all'implementazione IDataRepository .

Devo passare falso (finto / falso ??) IDataRepository in MainViewModel_Tests e test solo i dati sono caricati, copiati ecc. sull'esecuzione del comando? Un test dovrebbe verificare solo le cose che la classe fa davvero, non le dipendenze?

    
posta fex 21.12.2013 - 23:12
fonte

1 risposta

7

Should I pass fake (mock/fake it??) IDataRepository in MainViewModel_Tests and test just is data loaded, copied etc. on command execution?

Sì. Per quanto possibile i test unitari dovrebbero testare una singola classe. Qualsiasi dipendenza che si connette a qualsiasi fonte di dati al di fuori del processo di test dovrebbe essere derisa. Ciò include lo stato del sistema locale come l'orologio di sistema.

Should one test check just things what class really do - not what dependencies do?

Sì, altrimenti i test diventeranno molto fragili. Un cambiamento nel comportamento di una classe dipendente può richiedere modifiche a tutti i test che dipendono da quella classe. Idealmente ogni comportamento viene testato esattamente una volta.

Ovviamente avrai ancora bisogno di test di integrazione.

    
risposta data 21.12.2013 - 23:39
fonte

Leggi altre domande sui tag