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.
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