2

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

クラスのバージョン A とバージョン B の両方をロードし、それらを一斉に使用して、B によって出力された xml を A が解析できるようにする単体テストを作成できるかどうかは誰にもわかりません。

完全修飾名はどちらの場合も同じであるため使用できません。また、バージョン B は一時的な置き換えを意図しているため、変更できません。


同じ完全修飾名を持つクラスの 2 つの異なるバージョン (異なる jar から) をロードする方法を知っている人はいますか?

4

1 に答える 1

3

これを行うことができます:jarの1つから名前でクラスをロードするクラスローダーを作成します。次に、マーシャリングを呼び出して XML を作成します。この後、クラスローダーの別のインスタンス (または別のクラスローダー全体) を作成して、他の jar から名前でクラスをロードし、この 2 番目のクラスローダーを介して作成されたオブジェクトで XML を解析します。

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

于 2012-04-11T14:16:35.500 に答える