Die Techniken zum Testen von Software sind äußerst vielfältig. Je mehr Sie sich über sie informieren, desto mehr werden Sie unterschiedliche (und manchmal widersprüchliche) Anleitungen bemerken. Es gibt kein einziges 'Buch', an dem man vorbeikommt.
Ich denke, Sie befinden sich in einer Situation, in der Sie Anleitungen für Unit-Tests gesehen haben, die Dinge wie sagen
- Jeder Test sollte eigenständig sein und nicht von anderen Tests beeinflusst werden
- Jeder Komponententest sollte eine Sache und nur eine prüfen
- Unit-Tests sollten die Datenbank nicht treffen
und so weiter. Und all das ist richtig, je nachdem, wie Sie "Unit Test" definieren .
Ich würde einen 'Komponententest' wie folgt definieren: "Ein Test, der eine Funktionseinheit für eine Codeeinheit ausführt, die von anderen abhängigen Komponenten isoliert ist."
Nach dieser Definition ist das, was Sie tun (wenn Sie einen Datensatz zu einer Datenbank hinzufügen müssen, bevor Sie den Test ausführen können), überhaupt kein "Komponententest", sondern eher ein "Integrationstest". (Ein echter Komponententest trifft meiner Definition nach nicht auf die Datenbank, sodass Sie keinen Datensatz hinzufügen müssen, bevor Sie ihn löschen.)
Bei einem Integrationstest werden Funktionen ausgeführt, die mehrere Komponenten verwenden (z. B. eine Benutzeroberfläche und eine Datenbank), und die für Komponententests geltenden Richtlinien gelten nicht unbedingt für Integrationstests.
Wie andere in ihren Antworten erwähnt haben, ist das, was Sie tun, nicht unbedingt falsch, auch wenn Sie Dinge tun, die gegen einige Richtlinien für Komponententests verstoßen. Versuchen Sie stattdessen zu überlegen, was Sie in den einzelnen Testmethoden wirklich testen. Wenn Sie feststellen, dass Sie mehrere Komponenten benötigen, um Ihren Test zu bestehen, und einige Komponenten vorkonfiguriert werden müssen, fahren Sie fort.
Vor allem aber sollten Sie sich darüber im Klaren sein, dass es viele Arten von Softwaretests gibt (Komponententests, Systemtests, Integrationstests, Erkundungstests usw.), und nicht versuchen, die Richtlinien eines Typs auf alle anderen anzuwenden.