2012-04-11 3 views
2

私は、送信のためにデータをXML形式にマーシャリングおよびアンマーシャリングするために使用されるライブラリを開発しています。私は互換性をテストしたいcom.mycorp.Marshallerクラスを含むJarの2つのバージョンを持っています(すべてのクライアントを同時に更新することはできません)。2つのMavenアーティファクトの下位互換性のテスト

クラスの両方のバージョンAとバージョンBをロードし、Bが出力するXMLを確実にするために一斉にそれらを使用することができ単体テストを書くことが可能であれば誰もが知っているがAで

を解析できるIどちらの場合も同じであるため完全修飾名は使用できません。バージョンBはドロップイン置換であるため、変更することはできません。


誰もが同じ完全修飾名を持つクラスの(異なる瓶から)2つの異なるバージョンをロードするにはどのように任意のアイデアを持っていますか?

答えて

3

これを行うことができます。クラスのローダーを作成して、いずれかのJARファイルからクラスをロードします。その後、マーシャリングを呼び出してXMLを作成します。その後、別のクラスローダー(または別のクラスローダー)の別のインスタンスを作成して、別のjarからクラスをロードし、この2番目のクラスローダーを介して作成されたオブジェクトでXMLを解析します。

問題が発生した場合は、常にバージョンAのXMLを作成するテストと、バージョンBのXMLを解析するテストの2つのテストを作成できます.2つのテストは別々のJVMで実行できます