我正在开发一个库,用于将数据编组和解组成xml格式以进行传输。我现在有两个版本的Jar包含一个com.mycorp.Marshaller
类,我想测试它的兼容性(因为我们不能同时更新所有客户端)。
有没有人知道是否可以编写一个单元测试,可以同时加载类的版本A和版本B并一起使用它们,以确保B输出的xml可以被A解析。
我无法使用完全限定名称,因为在两种情况下都是相同的,我无法更改它,因为版本B旨在成为替代品。
有没有人知道如何使用相同的完全限定名称加载一个类的两个不同版本(来自不同的jar)?
答案 0 :(得分:3)
你可以这样做:创建一个类加载器,从一个jar中按名称加载类。然后调用编组并创建XML。在此之后,创建另一个类加载器实例(或另一个类加载器)以从另一个jar中按名称加载类,并使用通过第二个类加载器创建的对象解析XML。
如果遇到麻烦,可以随时创建两个测试:一个用于创建带有版本A的xml,另一个用于用版本B解析XML。这两个测试可以在单独的JVM中运行,一个接一个地运行< / p>