Le tecniche di test del software sono estremamente varie e più ti istruisci su di loro, inizierai a vedere molte indicazioni diverse (e talvolta contrastanti). Non esiste un singolo "libro" da passare.
Penso che ti trovi in una situazione in cui hai visto alcune indicazioni per i test unitari che dicono cose come
- Ogni test dovrebbe essere autonomo e non essere influenzato da altri test
- Ogni test di unità dovrebbe testare una cosa, e solo una cosa
- I test unitari non devono colpire il database
e così via. E tutti questi sono giusti, a seconda di come si definisce 'unit test' .
Definirei un 'unit test' come qualcosa di simile: "un test che esercita un pezzo di funzionalità per una unità di codice, isolata da altre componenti dipendenti".
Sotto questa definizione, ciò che stai 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 viene comunemente chiamato "test di integrazione" . (Un vero test unitario, secondo la 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 necessariamente applicare ai test di integrazione.
Come altri hanno menzionato nelle loro risposte, quello che stai facendo non è necessariamente sbagliato anche se fai cose contrarie ad alcune indicazioni del test unitario. Invece, prova a ragionare su cosa stai realmente testando in ogni metodo di prova, e se trovi che hai bisogno di più componenti per soddisfare il tuo test, e alcuni componenti richiedono la pre-configurazione, allora vai avanti e fallo.
Ma soprattutto, capisci che ci sono molti tipi di test del software (test unitari, test di sistema, test di integrazione, test esplorativi, ecc.), e non provare ad applicare la guida di un tipo a tutti i altri.