1

我创建了 Android 测试项目并想在其上使用 JMOCK。我在我的项目类路径中包含以下 jar

  • amcrest-all-1.1.jar
  • jmock-2.5.1.jar
  • jmock-junit4-2.5.1.jar
  • junit.jar
  • objenesis-1.0.jar

直到编译我收到此错误消息:

[2012-07-06 17:14:40 - mockTest] Dx ...在字节码偏移量 0000001b 本地 [0000]:Lorg/hamcrest/generator/qdox/parser/impl/JFlexLexer;本地人[0001]:我本地人[0002]:[C本地人[0003]:[C本地人[0004]:[我本地人[0005]:[我本地人[0006]:本地人[0007]:本地人[0008]:本地人[0009]:locals[000a]:locals[000b]:locals[000c]:locals[000d]:locals[000e]:locals[000f]:locals[0010]:stack[top0]:[B ...而处理块 001b ...同时处理方法 yylex:()I ...同时处理 yylex ()I ...同时处理 org/hamcrest/generator/qdox/parser/impl/JFlexLexer.class

[2012-07-06 17:14:40 - mockTest] Dx 1 错误;中止 [2012-07-06 17:14:40 - mockTest] 转换为 Dalvik 格式失败,错误 1

问题是什么?类路径中是否有任何不正确的 jar?

4

2 回答 2

0

问题是 JMock 使用动态字节码生成来工作,但 Dalvik 无法做到这一点:动态字节码生成被编译为 Dalvik 不支持的 JVM 字节码;因此转换时出现错误。

不幸的是,这意味着你不能在 Android 上使用 JMock——如果你需要它来进行测试,你必须在 JVM 上运行这些测试。

于 2012-07-06T13:29:32.913 回答
0

您似乎包含JAR了具有相同包名的包?在 Android 依赖项中打开所有 jar 并确保每个 jar 都有唯一的包。

于 2012-07-06T13:31:34.427 回答