【问题标题】:INSTRUMENTATION_RESULT: shortMsg=java.lang.NoClassDefFoundError running Android Instrumentation testsINSTRUMENTATION_RESULT:shortMsg=java.lang.NoClassDefFoundError 运行 Android Instrumentation 测试
【发布时间】:2013-12-11 08:53:19
【问题描述】:

当我尝试在新的 4.4 设备上运行我的 Android Instrumentation 测试时会发生此错误,而这些测试过去一直有效

[echo] Running tests...
[echo] Running tests ...
[exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.NoClassDefFoundError
[exec] INSTRUMENTATION_RESULT: longMsg=java.lang.NoClassDefFoundError: org.mockito.internal.runners.RunnerImpl
[exec] INSTRUMENTATION_CODE: 0

【问题讨论】:

    标签: android testing


    【解决方案1】:

    我发布这个问题是为了帮助其他人避免像我一样愚蠢地浪费时间!

    问题在于,当我将 Nexus 4 升级到 Android 4.4 Kitkat 时,我决定在开发者选项设置菜单中激活新的 Android 运行时 (ART)。

    结果就是这样!

    要运行仪器测试,请切换回 Dalvik!

    我正在使用 Mockito、Dexmaker 和 Dexmaker-Mockito 都使用 Mockito 运行 Instrumentation 测试,并使用 Emma 获取覆盖率数据。

    毫无疑问,将来需要更新或更改方法来测试 Dalvik 和/或 ART。

    【讨论】:

      【解决方案2】:

      像@tmuget 建议的那样使用“*”在命令行中不起作用,但正如日本博客文章所建议的那样,它看起来像是在测试中设置任何规范以围绕 NoClassDefFound 问题运行。如果你的包是 com.$somthing 你可以使用:

      adb shell am instrument -w -r  -e debug false -e package com
      

      需要注意的一些相关问题:

      Mockito Github

      L preview tracker

      Dexmaker issue

      Use article ( in Japanese )

      【讨论】:

        【解决方案3】:

        我在运行 ART 时找到了解决方法:使用 testrunner 的选项 -e package *

        这将正确运行您的所有测试,并且可以与 Mockito、Dexmaker 和 Dexmaker-Mockito 一起使用。

        下面是一个通过 Ant 运行的例子:

        <run-tests-helper emma.enabled="true">
            <extra-instrument-args>
                <arg value="-e" />
                    <arg value="coverageFile" />
                    <arg value="${emma.dump.file}" />
                <arg value="-e" />
                    <arg value="package" />
                    <arg value="*" />
            </extra-instrument-args>
        </run-tests-helper>
        

        【讨论】:

        • 不确定 Ant 在将它传递给仪器命令之前是否正在扩展“*”,但是命令行上的 -e package * 会给你“TestGrouping:无效包:'*' 不能找到或没有测试”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多