In realtà sto studiando i test delle unità, sto leggendo alcuni articoli su Internet e sto cercando di capire come funziona esattamente, ma in realtà non è molto chiaro per me.
Che cosa devo testare?
Ho visto che è una buona cosa creare interfacce e rendere le nostre classi testabili implementare questa interfaccia (permettendo di implementarla nelle nostre classi di test) ma quali sono esattamente le classi che dovrei testare?
Ad esempio, ammettendo che ho una struttura di progetto come questa:
- Presentation Layer (MVC)
- Livello aziendale (servizio / archivi)
- DB Layer (Mongo, Mysql ecc.)
Dovrei testare solo servizi e repository? Devo creare un'interfaccia per tutte le mie classi, anche se ne ho solo un'implementazione (due con il test)?
Che cosa restituisce davvero il mio test?
Ho letto un articolo in cui l'autore spiegava come testare un accesso DB usando i mock:
- Esiste una classe "S" che è un servizio aziendale che implementa un'interfaccia "I", che gestisce i dati prelevati dal db per fornire oggetti di business
- Esiste una classe "C" che è un controller e ha un metodo renderView, che invia alla vista una matrice degli oggetti di business dati dal servizio "S".
1 / Nel primo test, verifica il valore restituito da "S" su getBusinessObject utilizzando solo una raccolta di String. Quindi verifica solo se ha dati nella raccolta (null, il contenuto dopo aver aggiunto un elemento ecc ...)
2 / Nel secondo test, prende in giro il servizio "S" per usarlo per testare il renderView e verifica solo se ottiene 2 risultati quando il metodo dell'oggetto mock restituisce 2 oggetti.
La mia domanda è, come possiamo dire che il test è una rappresentazione dello stato reale del nostro programma?
Voglio dire, è possibile che dobbiamo fare un lavoro difficile in un servizio, con condizioni, iterazioni ecc ...
Non capisco davvero l'impatto del fare test di unità se prendiamo in giro una classe che
return "a string";
confronto con una classe che trasforma drasticamente una stringa nel metodo.
Forse non ho capito l'obiettivo del test unitario in effetti.