Angenommen, ich benutze TDD, um eine Klasse A zu erstellen. Nachdem ich fertig bin und einen "grünen" Balken habe, entscheide ich, dass ich Klasse B mit nur statischen Methoden aus Klasse A mit einem Refactoring-Tool extrahieren möchte. Ich habe jetzt Klasse A und Klasse B beide vollständig Unit-getestet, aber nur durch die Testklasse für Klasse A. Soll ich jetzt auch eine Testklasse für die Funktionalität der Klasse B erstellen, obwohl das ein Duplikationstest wäre?
Wie immer hängt es von Ihrem Kontext ab. Was interessiert dich?
Gesamtverhalten
Wenn Sie ein System für den internen Gebrauch oder sogar einen öffentlichen (Web-) Dienst aufbauen, bei dem die von Ihnen versandte Software das gesamte System ist, müssen Sie sich nicht allzu viel um eine einzelne Klasse kümmern. Wenn Sie ein System erstellen, testen Sie das System.
Solange es durch Tests abgedeckt ist, wissen Sie, dass sich Ihr System korrekt verhält. Es kann jedoch vorkommen, dass Sie nach einigen Monaten feststellen, dass Sie die ursprüngliche A
-Klasse nicht mehr benötigen, also löschen Sie sie und die entsprechenden Komponententests. Dies kann dazu führen, dass die Testabdeckung von B
sinkt. Es kann also sinnvoll sein, Code Coverage-Trends im Auge zu behalten.
Einheitenverhalten
Wenn Sie eine (Klassen-) Bibliothek oder ein Framework erstellen, versenden Sie jede öffentliche Klasse als Teil des Produkts. Wenn Sie mehrere Benutzer Ihrer Bibliothek haben, müssen Sie darüber nachdenken, wie Sie Änderungen vermeiden können.
Eine der effektivsten Methoden, um Änderungen zu vermeiden, besteht darin, jede Klasse durch Unit-Tests abzudecken. Solange Sie die Tests nicht ändern , wissen Sie, dass unbeständige Änderungen unwahrscheinlich sind wenn alle Tests grün sind. Dazu müssen Sie jedoch alle Ihre öffentlichen Klassen und Mitglieder testen.
Wenn Sie also B
zu einer öffentlichen Klasse extrahieren, ist dies jetzt eine Klasse, von der andere Konsumenten abhängig sein können, und es wäre eine bahnbrechende Änderung, wenn Sie sie ändern. Daher sollten Sie es mit neuen Tests abdecken. Wenn Sie eine Einheit erstellen, testen Sie die Einheit.
Nach dem, was Sie beschrieben haben, besteht die Antwort darin, einen weiteren neuen Test zu erstellen. Wenn sich eine von Ihnen ändert (oder jemand anders, der nicht mit dem "geteilten Test" vertraut ist), wird die andere Klasse nicht mehr getestet.
Wenn dies verschwenderisch erscheint, geben Sie den allgemeinen Testcode in eine dritte Klasse ...
Tags und Links unit-testing design tdd oop