Le tecniche di test del software sono estremamente varie e più ti istruisci su di esse, inizierai a vedere molte indicazioni diverse (e talvolta contrastanti). Non esiste un unico "libro" da seguire.
Penso che ti trovi in una situazione in cui hai visto alcune indicazioni per i test unitari che dicono cose del genere
- Ogni test dovrebbe essere autonomo e non essere influenzato da altri test
- Ogni unit test dovrebbe testare una cosa e solo una cosa
- I test unitari non dovrebbero colpire il database
e così via. E tutti quelli hanno ragione, a seconda di come si definisce 'unit test' .
Definirei un "test unitario" come qualcosa del tipo: "un test che esercita una parte di funzionalità per un'unità di codice, isolata da altri componenti dipendenti".
In base a tale definizione, ciò che si sta facendo (se è necessario aggiungere un record a un database prima di poter eseguire il test) non è affatto un "test unitario", ma più di quello che comunemente viene chiamato un "test di integrazione". (Un vero test unitario, per mia definizione, non colpirà il database, quindi non sarà necessario aggiungere un record prima di eliminarlo.)
Un test di integrazione eserciterà funzionalità che utilizzano più componenti (come un'interfaccia utente e un database) e la guida che si applicherebbe ai test unitari non si applica necessariamente ai test di integrazione.
Come altri hanno già detto nelle loro risposte, ciò che stai facendo non è necessariamente sbagliato anche se fai cose contrarie ad alcune indicazioni del test unitario. Invece, prova a ragionare su ciò che stai realmente testando in ciascun metodo di test e se trovi che hai bisogno di più componenti per soddisfare il tuo test e alcuni componenti richiedono una pre-configurazione, vai avanti e fallo.
Ma soprattutto, capisci che esistono molti tipi di test software (unit test, test di sistema, test di integrazione, test esplorativi, ecc.) E non provare ad applicare la guida di un tipo a tutti gli altri.