La scorsa notte io ei miei colleghi abbiamo avuto un po 'di disaccordo sui test unitari nella nostra applicazione PHP/MySQL. La metà di noi sosteneva che quando si testava una funzione all'interno di una classe, bisognava prendere in giro qualsiasi cosa al di fuori di quella classe e dei suoi genitori. L'altra metà di noi ha sostenuto che non si deve prendere in giro tutto ciò che è una dipendenza diretta della classe.Test unitario: obiettivo fondamentale?
L'esempio specifico era il nostro meccanismo di registrazione, che si è verificato attraverso una classe di registrazione statica e abbiamo avuto un numero di chiamate di Logging :: log() in varie posizioni all'interno della nostra applicazione. La prima metà di noi ha affermato che il meccanismo di registrazione dovrebbe essere simulato (fittato) perché verrebbe testato nei test dell'unità di registrazione. La seconda metà di noi ha sostenuto che dovremmo includere la classe Logging originale nel nostro test unitario in modo che se apportiamo una modifica alla nostra interfaccia di registrazione, saremo in grado di vedere se crea problemi in altre parti dell'applicazione a causa di errori per aggiornare l'interfaccia di chiamata.
Quindi immagino che la domanda fondamentale sia: i test di unità servono a testare la funzionalità di una singola unità in un ambiente chiuso o mostrano le conseguenze delle modifiche a una singola unità in un ambiente più ampio? Se è uno di questi, come realizzi l'altro?
+1 Questa è una grande domanda, perché espone qualcosa che penso che molte persone siano confuse riguardo ai test unitari. – Fenton