我有一个场景,我们的应用程序使用Hibernate 3.5.2(我知道它已经老了,但它经过了战斗测试,我们无法改变它)我最近也不得不为一些测试添加PowerMock。这里的问题是Hibernate版本太旧了以至于它使用了Javassist 3.9.0.GA,而最旧版本的PowerMock(我无论如何都不能使用但是无论如何)都是从Javassist 3.12.0.GA开始的。旧版本的javassist也存在一些问题,这些问题只能在以后的版本中解决,例如3.20.0.GA。
如何管理我们的测试才能正常运行?我已经阅读了有关使用不同类加载器加载类的内容,虽然它很复杂但我愿意尝试(我们的代码库中有一堆关于自定义类加载器的参考代码)。还有另外一种方法吗?我们使用Ant作为构建脚本,因此没有可用的Maven / Gradle shenanigans。
编辑:我刚刚发现,如果PowerMock是从除系统类加载器之外的任何类加载器加载的,则抛出异常。是否仍然可以覆盖SCL(使用-Djava.system.classloader属性)?