Supponiamo di avere prove per due metodi di una classe. Il primo metodo raccoglie i dati da un altro livello e li inserisce in una sorta di memoria indipendente dal runtime (come una tabella SQL), quindi tutti i dati gestiti da questo test sono codificati nel test. Il secondo metodo è responsabile della presa dei dati da dove il primo metodo lo ha lasciato e trasformandolo in qualche modo (calcolo, spostamento di alcune parti altrove, ecc.).
Ora questo secondo metodo potrebbe avere input hardcoded come il primo, o si potrebbe presumere che i due test sarebbero eseguiti in sequenza e potrebbe riprendere da dove il primo test è stato interrotto, prendendo i dati che erano realmente memorizzati dal primo test.
Se avessi optato per la seconda opzione, avresti davvero una buona idea che i due metodi funzionino bene insieme, tuttavia, se il primo test fallisse, tutti i test successivi fallirebbero, portando via il vantaggio dei test nell'aiutare a isolare i bug più rapidamente.
Se avessi optato per la prima opzione, ogni metodo sarebbe stato isolato e testato in modo indipendente, ma non avresti mai saputo che potevano davvero lavorare insieme correttamente.
Qual è l'opzione migliore qui? C'è una sorta di alternativa come avere un singolo test per ogni metodo isolato con hardcoding e quindi test più grandi che contengono entrambi i metodi in uno?