Ho sentito dire che una qualità desiderabile dei test unitari è che testano ciascuno scenario indipendentemente. Mi sono reso conto durante la scrittura di test oggi che quando si confronta una variabile con un altro valore in un'istruzione come:
assertEquals("foo", otherObject.stringFoo);
Stai veramente provando tre cose:
-
La variabile che stai test esiste e rientra nell'ambito.
-
La variabile che stai testando è di tipo previsto.
-
Il valore della variabile che stai testando è quello che ti aspetti che sia.
Che per me solleva la questione se testare ognuno di questi in modo implicito in modo che si verifichi un errore di test sulla linea specifica che verifica il problema:
assertTrue(stringFoo);
assertTrue(stringFoo.typeOf() == "String");
assertEquals("foo", otherObject.stringFoo);
Ad esempio se la variabile era un intero invece di una stringa, il fallimento del test case sarebbe sulla linea 2, che ti darebbe più feedback su cosa è andato storto.
Dovresti testare questo tipo di cose in modo esplicito o sto pensando troppo a questo?