在提取新更改(2.3-SNAPSHOT)后,我的所有应用测试都会失败,结果相同。当实例化TestClass时,代码失败,并且恰好在(反射地)调用getConstructors()方法时。提出的例外是:
java.lang.NoSuchMethodError: org.objectweb.asm.MethodVisitor.visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
at org.objectweb.asm.commons.GeneratorAdapter.invokeInsn(Unknown Source)
at org.objectweb.asm.commons.GeneratorAdapter.invokeVirtual(Unknown Source)
at org.robolectric.bytecode.AsmInstrumentingClassLoader$ClassInstrumentor.instrumentConstructor(AsmInstrumentingClassLoader.java:541)
at org.robolectric.bytecode.AsmInstrumentingClassLoader$ClassInstrumentor.instrument(AsmInstrumentingClassLoader.java:422)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.getInstrumentedBytes(AsmInstrumentingClassLoader.java:245)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.findClass(AsmInstrumentingClassLoader.java:159)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.loadClass(AsmInstrumentingClassLoader.java:98)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)
at java.lang.Class.getConstructors(Class.java:1517)
at org.junit.runners.model.TestClass.<init>(TestClass.java:39)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:75)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57)
at org.robolectric.RobolectricTestRunner$HelperTestRunner.<init>(RobolectricTestRunner.java:649)
at org.robolectric.RobolectricTestRunner.getHelperTestRunner(RobolectricTestRunner.java:289)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:206)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
[CUT]
我在Intellij IDEA中运行,我的.iml正确显示:
<orderEntry type="library" exported="" name="asm-5.0.1" level="project" />
此外,如果我调试到asm库,我会看到:
public void visitMethodInsn(int i, java.lang.String s, java.lang.String s1, java.lang.String s2, boolean b) { /* compiled code */ }
我真的不知道它是否与Robolectric有关,因为当我mvn clean install
时所有标准测试都通过了......可能是什么问题?
答案 0 :(得分:1)
我得到了同样的错误。看起来你的类路径中有一个冲突版本的asm,可能是asm 4.x,它应该是asm 5.另外,请注意asm有两种形式:asm-all包含asm和asm的所有类,asm-utils,asm-tree等,它们是拆分包。这也可能造成冲突。