Se la tua classe di business logic non è ancora stata scritta, i tuoi test di accettazione possono essere completi solo per ciò che è stato scritto e non per quello che farà il programma. Una delle idee di TDD è di scrivere i test in modo tale che non riescano ora, scrivere il codice, e poi vedere se tutti i test passano, quando lo fanno, allora sai che hai finito. Questo funziona solo se i test scritti in modo completo definiscono quali sono i requisiti del progetto, a livello aziendale.
Devi decidere che cosa dovrebbero fare i test.
Il loro scopo è farti sapere quando hai finito di scrivere il codice, nel qual caso devi avere i test completi per definire quali sono i tuoi requisiti, vederli come un'enumerazione di tutti i criteri di accettazione che renderanno il tuo stack titolari felici.
Il punto su di loro è quello di darti confidenza nella qualità dei codici, questo ti permetterà di ridefinire il codice e verificare che faccia ancora quello che dovrebbe. In questo caso è necessario concentrarsi maggiormente sulla verifica delle interfacce tra i componenti, in modo che le modifiche interne possano mostrare lo stesso comportamento esterno.
È il momento di verificare che, durante lo sviluppo, uno sviluppatore non abbia violato i vecchi requisiti o che soddisfi nuovi requisiti, nel qual caso la velocità della suite potrebbe avere un impatto. Se si dispone di un ciclo molto stretto in cui gli sviluppatori possono eseguire i test così rapidamente che lo fanno spesso, con il tempo di una qualità nota molto breve, è necessario includere solo i test che possono essere eseguiti rapidamente. Questi test possono quindi essere suddivisi in diverse suite da eseguire in momenti diversi, ad es. nell'editor dopo il salvataggio, sul commit, accanto a una build, dopo la build, settimanalmente, continuamente ecc.
Is it enough to use those acceptance tests which are already in place, or I need to develop additional unit tests?
Dipende. Qual è il punto di aggiungere questi nuovi test? Per quale obiettivo ti stai sforzando? I test di accettazione sono ottimi da tenere in considerazione se forniscono informazioni aggiuntive, confidenza con il codice e aiutano a identificare i bug. Potresti non essere d'accordo con tutto in questo pezzo ma dai un'occhiata a Why Most Unit Testing è Waste come suggerisce che anche mantenere i vecchi test potrebbe non essere così prezioso. Decidi cosa vuoi e struttura il tuo approccio di prova.