Les techniques de test de logiciels sont extrêmement variées, et plus vous vous renseignerez à leur sujet, vous commencerez à voir beaucoup de conseils différents (et parfois contradictoires). Il n'y a pas un seul «livre» pour passer.
Je pense que vous êtes dans une situation où vous avez vu des conseils pour les tests unitaires qui disent des choses comme
- Chaque test doit être autonome et ne pas être affecté par d'autres tests
- Chaque test unitaire doit tester une chose, et une seule chose
- Les tests unitaires ne doivent pas toucher la base de données
etc. Et tout cela est vrai, selon la façon dont vous définissez le «test unitaire» .
Je définirais un «test unitaire» comme quelque chose comme: «un test qui exerce un élément de fonctionnalité pour une unité de code, isolé des autres composants dépendants».
Selon cette définition, ce que vous faites (si cela nécessite d'ajouter un enregistrement à une base de données avant de pouvoir exécuter le test) n'est pas du tout un `` test unitaire '', mais plutôt ce qu'on appelle communément un `` test d'intégration ''. (Un vrai test unitaire, selon ma définition, n'atteindra pas la base de données, vous n'aurez donc pas besoin d'ajouter un enregistrement avant de le supprimer.)
Un test d'intégration exercera une fonctionnalité qui utilise plusieurs composants (comme une interface utilisateur et une base de données), et les conseils qui s'appliqueraient aux tests unitaires ne s'appliquent pas nécessairement aux tests d'intégration.
Comme d'autres l'ont mentionné dans leurs réponses, ce que vous faites n'est pas nécessairement faux même si vous faites des choses contraires à certaines directives de test unitaire. Au lieu de cela, essayez de raisonner sur ce que vous testez réellement dans chaque méthode de test, et si vous trouvez que vous avez besoin de plusieurs composants pour satisfaire votre test, et que certains composants nécessitent une préconfiguration, alors allez-y et faites-le.
Mais surtout, comprenez qu'il existe de nombreux types de tests logiciels (tests unitaires, tests système, tests d'intégration, tests exploratoires, etc.), et n'essayez pas d'appliquer les conseils d'un type à tous les autres.