Las técnicas de prueba de software son extremadamente variadas, y cuanto más se eduque acerca de ellas, comenzará a ver mucha orientación diferente (y a veces conflictiva). No hay un solo 'libro' para seguir.
Creo que estás en una situación en la que has visto alguna guía para las pruebas unitarias que dicen cosas como
- Cada prueba debe ser independiente y no verse afectada por otras pruebas
- Cada prueba unitaria debe probar una cosa, y solo una cosa
- Las pruebas unitarias no deberían alcanzar la base de datos
y así. Y todo eso es correcto, dependiendo de cómo defina 'prueba unitaria' .
Definiría una 'prueba de unidad' como algo así como: "una prueba que ejercita una pieza de funcionalidad para una unidad de código, aislada de otros componentes dependientes".
Según esa definición, lo que está haciendo (si requiere agregar un registro a una base de datos antes de poder ejecutar la prueba) no es una 'prueba unitaria' en absoluto, sino más de lo que comúnmente se llama una 'prueba de integración'. (Una verdadera prueba unitaria, según mi definición, no afectará la base de datos, por lo que no necesitará agregar un registro antes de eliminarlo).
Una prueba de integración ejercerá la funcionalidad que utiliza múltiples componentes (como una interfaz de usuario y una base de datos), y la guía que se aplicaría a las pruebas unitarias no se aplica necesariamente a las pruebas de integración.
Como otros han mencionado en sus respuestas, lo que está haciendo no está necesariamente mal, incluso si hace cosas contrarias a alguna guía de prueba de unidad. En cambio, trate de razonar sobre lo que realmente está probando en cada método de prueba, y si encuentra que necesita múltiples componentes para satisfacer su prueba, y algunos componentes requieren una configuración previa, continúe y hágalo.
Pero, sobre todo, comprenda que hay muchos tipos de pruebas de software (pruebas unitarias, pruebas de sistema, pruebas de integración, pruebas exploratorias, etc.), y no intente aplicar la guía de un tipo a todos los demás.