2016-11-20 3 views
0

Wenn ich fleißig Unit-Tests erstellt habe, dann sind Integrationstests, wenn ich meine Anwendung zusammenstelle, meine Hände ein bisschen gebunden, wenn ich die Architektur umgestalten will?Erschweren eine große Anzahl von Unit- und Integrationstests architektonische Änderungen?

Es scheint, als ob sogar nur das Ziehen einer Methode von einer Klasse in eine andere einen ziemlich hohen Aufwand hätte, um die Tests wieder in Gang zu bringen.

+0

Ich würde argumentieren, dass es die Dinge einfacher macht. Der Kern der Tests besteht darin, Ihren Code flexibel und einfach zu ändern (zumindest für Komponententests). Integrationstests wären etwas kniffliger. Ich glaube, die Schwierigkeit hängt auch davon ab, wie sich deine Architektur verändert. – byxor

Antwort

1

Vielleicht

Wenn Ihre Unit-Tests sind "change detector", Spiegeln, die Umsetzung des Codes, dann wird es wahrscheinlich eine nicht-triviale Menge an Overhead zu Refactoring sein.

Da Komponententests im Allgemeinen nur mit Implementierungsdetails umgehen, werden sie ausfallen, da sich die Architektur ändert. Idealerweise wird dieser Fehler ein konstruktives Feedback sein und Sie darüber informieren, welche Art von Vertrag andere Teile Ihres Codes erwarten.

Schreiben von Tests ist ziemlich einfach, schreiben aussagekräftige Tests, die keine False Positives, die isoliert sind, und keine Kaskadenfehler haben, ist viel schwieriger :) (immer noch versucht, es hier herauszufinden).

Testen entlang der öffentlichen Schnittstellen Ihrer Bibliothek sollte Implementierungsfehler minimieren. Darüber hinaus sollte eine große Anzahl von Solitär-Tests dazu beitragen, Testausfälle zwischen Komponenten zu minimieren. Eine Strategie, die ich als sehr hilfreich empfunden habe, ist bei der Entwicklung von MVPs oder Prototypen, bei denen Implementierungen untersucht werden, Tests auf der Akzeptanzebene oder der Funktionsebene helfen, das Produkt zu validieren, während bei der Implementierung viel Nachsicht gewährt wird. Diese Tests finden normalerweise entlang der öffentlichen Schnittstelle Services statt und nicht entlang der Codes.

Verwandte Themen