【问题标题】:JMock jars do not work inside Android test project (project doesn't build )JMock jars 在 Android 测试项目中不起作用(项目不构建)
【发布时间】:2012-07-06 13:24:41
【问题描述】:

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

  • 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 本地人[0003]:[C 本地人[0004]:[我 本地人[0005]:[我本地人[0006]:本地人[0007]: 当地人[0008]:当地人[0009]:当地人[000a]: 本地人[000b]:本地人[000c]: 当地人[000d]:当地人[000e]:当地人[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?

【问题讨论】:

    标签: java android mocking


    【解决方案1】:

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

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

    【讨论】:

    • 那我如何在Android上使用JMock呢?
    【解决方案2】:

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

    【讨论】:

    • @M Mohsin Naeem 起初我使用 hamcrest-all-1.1.jar 的 hamcrest-core-1.1.jar 和 hamcrest-library-1.1.jar 罐子,但在编译之前我得到了错误系统它说这些罐子上有重复的 LICENSE.TXT 文件。也许问题真的是因为错误地合并了这两个罐子。那你能告诉我从哪里可以获得正常工作的hamcrest-all-1.1.jar吗?
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多