Ich muss Unit-Tests und Integrationstests für ein Projekt schreiben.
- Sollten alle Tests in einem einzigen Testordner abgelegt werden ?
- Oder sollten sich Komponententests und Integrationstests jeweils in einem separaten Testordner befinden ?
- Oder sollte ich sie sogar in getrennte Projekte stecken ?
Wenn ich sie zusammenhalte, gibt es bei diesem Ansatz Vor- oder Nachteile?
architecture
unit-testing
integration-tests
Ahmed Ragheb
quelle
quelle
Antworten:
Im Allgemeinen: Ja, Sie sollten Integrationstests und Komponententests in verschiedenen Ordnern ablegen. Oft ziehen Programmierer keine klare Grenze zwischen diesen beiden Arten von Tests und schreiben einfach, welche Art von Test nützlich ist. Integrationstests sind jedoch in der Regel langsamer, da sie häufig Folgendes umfassen:
Im Gegensatz dazu würde ein Komponententest teure Vorgänge verspotten, sodass Komponententests in der Regel schnell ausgeführt werden (der langsamste Teil der Testausführung ist häufig das Test-Framework selbst).
Wenn ein Programmierer an dem System arbeitet, befindet er sich in einem Bearbeitungstestzyklus. Je schneller sie Test-Feedback erhalten und je kürzer der Zyklus ist, desto produktiver können sie sein. Dort wollen wir also nur wichtige Tests durchführen, die schnell abgeschlossen sind. Die komplette Testsuite wird nur im Rahmen eines QS-Prozesses ausgeführt, z. B. auf einem CI-Server.
Dies bedeutet, dass große Testsuiten kategorisiert werden sollten. Können wir nur Komponententests für eine bestimmte Komponente auswählen? Können wir langsame Tests ausschließen? Eine einfache Möglichkeit besteht darin, verschiedene Testsuiten in verschiedenen Verzeichnissen zu verwalten. Wenn Sie nur sehr wenige Tests haben, ist ein einzelnes Verzeichnis auch in Ordnung, solange ein Programmierer leicht eine Teilmenge von Tests auswählen kann.
Was auch immer einem Programmierer erlaubt, schnelles Feedback zu erhalten, ist gut. Die umfassendste Testsuite spielt keine Rolle, wenn sie nicht regelmäßig ausgeführt wird.
Weitere Lektüre:
quelle