我创建了Android测试项目,并希望在其上使用JMOCK。我将以下 jar 包含在我的项目类路径中
- 阿姆克雷斯特-全部-1.1.jar
- JMOCK-2.5.1.jar
- JMOCK-Junit4-2.5.1.jar
- 朱尼特.jar
- 对象-1.0.jar
在编译之前,我收到此错误消息:
[2012-07-06 17:14:40 - 模拟测试] Dx ...在字节码偏移量 0000001b locals[0000]: Lorg/hamcrest/generator/qdox/parser/impl/JFlexLexer; 局部变量[0001]: I 局部变量[0002]: [C 局部变量[0003]: [C 局部变量[0004]: [I locals[0005]: [I locals[0006]: locals[0007]: 本地人[0008]: 本地人[0009]: 本地人[000a]: 当地人[000b]: 当地人[000c]: 局部变量[000d]: 本地人[000e]: 本地人[000f]: 局部变量[0010]: 堆栈[top0]: [B ...在工作时 001B座...在研究方法yylex:()I ...加工时 yylex ()I ...加工时 org/hamcrest/generator/qdox/parser/impl/JFlexLexLexer.class
[2012-07-06 17:14:40 - 模拟测试] Dx 1 错误;中止 [2012-07-06 17:14:40 - 模拟测试] 转换为 Dalvik 格式失败,出现错误 1
问题出在哪里?类路径中是否有不正确的 jar?
问题是JMock使用动态字节码生成工作,但Dalvik无法做到这一点:动态字节码生成被编译为Dalvik不支持的JVM字节码; 因此转换时出错。
不幸的是,这意味着你不能在Android上使用JMock - 如果你需要它进行测试,你必须在JVM上运行这些测试。
您似乎包含了具有相同包名称的JAR
?在 Android 依赖项中,打开所有 jar,并确保每个 jar 都有唯一的包。