2012-04-11 8 views
2

Ich entwickle eine Bibliothek, die verwendet wird, um Daten in ein XML-Format für die Übertragung zu marshall und unmarshall zu übertragen. Ich habe jetzt zwei Versionen eines Jar mit einer com.mycorp.Marshaller Klasse, die ich auf Kompatibilität testen möchte (wie wir nicht alle Clients zur gleichen Zeit aktualisieren können).Abwärtskompatibilität von zwei Maven-Artefakten testen

Weiß jemand, ob es möglich ist, einen Unit-Test zu schreiben, die sowohl Version A und B-Version der Klasse sie durch B ausgegeben xml unisono und verwenden, um sicherzustellen, laden können, kann durch A.

I analysiert werden Ich kann den vollqualifizierten Namen nicht verwenden, da dieser in beiden Fällen identisch ist, und ich kann ihn nicht ändern, da Version B als Ersatz gedacht ist.


Hat jemand eine Idee, wie zwei verschiedene Versionen laden (aus verschiedenen Gläsern) eine Klasse mit denselben vollständig qualifizierten Namen?

Antwort

3

Sie könnten dies tun: Erstellen Sie einen Klassenlader, der die Klasse nach Name aus einem der Gläser lädt. Dann rufen Sie das Marshalling auf und erstellen Sie das XML. Erstellen Sie anschließend eine weitere Instanz des Klassenladeprogramms (oder eines anderen Klassenladeprogramms), um die Klasse anhand des Namens aus dem anderen jar zu laden und das XML mit dem Objekt zu analysieren, das mit diesem Ladeprogramm der zweiten Klasse erstellt wurde.

Wenn Probleme auftreten, können Sie immer zwei Tests erstellen: einen, um das XML mit Version A zu erstellen, und einen weiteren, um XML mit Version B zu analysieren. Die beiden Tests können nacheinander in separaten JVMs ausgeführt werden

Verwandte Themen