2016-08-16 6 views
0

Ich arbeite an einem Legacy-Projekt, die viele externe Abhängigkeiten haben und Klassen sind so eng gekoppelt, dass es fast unmöglich ist, Unit-Test. Ich weiß, dass der beste Weg, dies anzustreben, ein größerer Refactor wäre, aber im Moment haben wir nicht den Luxus, dies zu tun, da das Projekt praktisch 0 Tests ist, so dass wir sehr daran interessiert sind, Dinge zu brechen.Mocking Legacy-Bibliotheken

Was wir im Moment erreichen wollen, ist, schnell Einheiten- und Komponententests zu erstellen und progressiv zu refaktorisieren, während wir an dem Projekt arbeiten. Für einen Komponententest denke ich daran, eine Art Wrapper für die vorhandenen Klassen zu haben, um die Eingabe und Ausgabe zu "zeichnen" und sie dann in einer physischen Datei zu erhalten. Wenn wir Tests durchführen, gibt es die Ausgabe basierend auf der Eingabe zurück.

Wie ich denke, um dies zu erreichen, ist die Methode Namen und Eingabeparameter als Schlüssel und die Ausgabe als Wert zu speichern. Die Ausgabe wird während des Tests serialisiert und aufgezeichnet und deserialisiert.

Dieser Ansatz scheint in der Lage zu sein, einige Fälle zu behandeln .. aber ich sehe voraus, dass es später viele Komplikationen geben wird. ZB: Ich könnte Probleme haben, bestimmte Objekte zu serialisieren. Und ich könnte auch Schwierigkeiten haben, Objektreferenz von "out" Parametern zu übergeben.

Also hier kommt meine Frage. Gibt es Bibliotheken, die all diese Dinge tun? Ich hätte nie darüber nachgedacht, dies manuell zu tun, wenn es eine Bibliothek dafür gäbe. Übrigens verwende ich Java.

Dank

Antwort

0

Statt niedrigem Niveau Unit-Tests zu tun, ich mit Tests für die minimalen Einheiten beginnen würde Sie jetzt teilen können, das heißt möglicherweise nur ein. Sie können die Dateneingabe und -ausgabe unter Verwendung einer Serialisierungsbibliothek erfassen, bei der die Objekte nicht als seriell, z. Jackson.