我有几个测试使用PowerMockRule来引导以避免类加载问题,因为它在PowerMockito的文档中是推荐的:
基于代理的引导程序和基于类加载的引导程序之间的主要区别在于,在使用XML框架等时不会遇到类加载问题。当使用PowerMock进行集成测试时,建议使用这种引导方式。系统
在同一个测试包中,我有使用PowerMockRunner和@RunWith注释的测试。我在这些测试中遇到了意想不到的问题:
java.lang.VerifyError: Expecting a stackmap frame at branch target 12
Exception Details:
Location:
javax/xml/bind/JAXBContext.newInstance([Ljava/lang/Class;Ljava/util/Map;)Ljavax/xml/bind/JAXBContext; @1: ifnonnull
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: 2ac7 000b bb00 3d59 b700 3ebf 2abe 0464
0000010: 3d1c 9b00 172a 1c32 c700 0bbb 003d 59b7
0000020: 003e bf84 02ff a7ff eb2a 2bb8 0040 b0
为什么PowerMockRule会影响使用PowerMockRunner的测试?
如果我删除使用PowerMockRule的测试,那么一切正常。