JMock jar在Android测试项目中不起作用(项目不构建)

时间:2012-07-06 13:24:42

标签: java android mocking

我创建了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   locals [0000]:Lorg / hamcrest / generator / qdox / parser / impl / JFlexLexer;   当地人[0001]:我当地人[0002]:[C locals [0003]:[C locals [0004]:[I]   当地人[0005]:[本地人[0006]:当地人[0007]:   当地人[0009]:当地人[000a]:当地人[000a]:    locals [000b]:locals [000c]:   locals [000d]:locals [000e]:locals [000f]:    locals [0010]:stack [top0]:[B ...在工作时   阻止001b ...在yylex方法上工作时:()我......在处理时   yylex()我...在处理时   组织/ hamcrest /发电机/ qdox /分析器/参数impl / JFlexLexer.class

     

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

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

2 个答案:

答案 0 :(得分:0)

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

不幸的是,这意味着您无法在Android上使用JMock - 如果您需要进行测试,则必须在JVM上运行这些测试。

答案 1 :(得分:0)

您似乎已将JAR包含在相同的包名中?在Android Dependencies中打开所有jar并确保每个jar都有Unique包。