运行时找不到某些方法的问题

Powermock 和 mockito 需要配对版本使用,不然会报错,版本配对连接:https://github.com/powermock/...

classloader 冲突问题

执行时 powermock 有可能出现以下报错:
image.png
出现了 Failed to load ApplicationContext 字样的报错时,是由于 classloader 冲突导致,需要把对应冲突的包添加到 @PowerMockIgnore 列表中
image.png
· 例如上图的 org/w3c 包出现冲突,我们即可增加到 @PowerMockIgnore 列表中:
@PowerMockIgnore({"javax.xml.*","com.sun.org.apache.xerces.*","javax.net.ssl.*","javax.management.*","org.xml.*","org.w3c.*"})

参考:

https://stackoverflow.com/que...

继承出现验证器冲突问题:

· powermock 使用继承的时候可能会报出这样的一个错误:
java.lang.VerifyError: Inconsistent stackmap frames at branch target 38
image.png
原因是因为 PowerMock中为支持对构造函数的测试,借助于Javassist实现对字节码的操作。但是从Java 6开始引入的Stack Map Frames特性与Javassist不兼容。在Java 6中该Stack Map Frames还是可选的。但是到了Java 7,该Stackmap Frames已经是默认使用的,所以不兼容问题导致了该异常。
在java8中问题可以使用增加启动参数 -Xverify:none 来解决。

参考:https://stackoverflow.com/que...

PS:升级了 javassist 版本为 3.25.0-GA 后,不用加启动参数也能正常执行啦!


sinlong
9 声望0 粉丝