【问题标题】:How to solve ClassNotFoundException on uiautomator startup?如何解决 uiautomator 启动时的 ClassNotFoundException?
【发布时间】:2014-06-25 10:04:11
【问题描述】:

我正在尝试使用 android-sdk 为我的应用提供的工具为我的应用创建 GUI 测试。首先,我设置了一个项目,如“配置您的开发环境”中的http://developer.android.com/tools/testing/testing_ui.html 中所述。目前我已经从http://developer.android.com/tools/testing/testing_ui.html#sample 获取了示例测试并将其放在项目 UITestsMyAppBasis 中,在包 com.MyApp.guitest 中

命令 ant build 成功运行,我在项目的 bin 目录中获得了一个 jar 文件。但是当我尝试通过以下方式启动它时:

adb push ./UiTestsMyAppBasis.jar /data/local/tmp
adb shell uiautomator runtest UITestsMyAppBasis.jar -c com.MyApp.guitest

我得到控制台输出:

INSTRUMENTATION_RESULT: shortMsg=java.lang.RuntimeException
INSTRUMENTATION_RESULT: longMsg=com.MyApp.guitest
INSTRUMENTATION_CODE: 0

和 logcat 输出:

java.lang.RuntimeException: com.MyApp.guitest
    at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:98)
    at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85)
    at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76)
    at com.android.commands.uiautomator.Launcher.main(Launcher.java:83)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.MyApp.guitest
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at com.android.uiautomator.testrunner.TestCaseCollector.addTestClass(TestCaseCollector.java:84)
    at com.android.uiautomator.testrunner.TestCaseCollector.addTestClass(TestCaseCollector.java:72)
    at com.android.uiautomator.testrunner.TestCaseCollector.addTestClasses(TestCaseCollector.java:53)
    at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:95)

我用的是安卓模拟器

  • 目标名称:Google API (Google Inc.)

  • 平台:4.1.2

  • API 级别:16

  • CPU/ABI ARM (armeabi-v7a)

  • 设备:10.1" WXGA(平板电脑)(1280x800;mdpi)

  • 内存选项:Ram:512 VM 堆:32

  • 内部存储:200 MiB

  • SD 卡:256 MiB

  • 仿真选项:使用主机 GPU

https://stackoverflow.com/a/13805869/1171328 中所述在 /data/dalvik-cache 上设置 chmod 并没有改变输出。

【问题讨论】:

    标签: android android-uiautomator gui-testing


    【解决方案1】:

    我相信,这应该可以解决您的问题:

    -c 参数用于运行类而不是打包。所以应该是:

    adb shell uiautomator runtest UITestsMyAppBasis.jar -c com.MyApp.guitest.<class_name>

    【讨论】:

      【解决方案2】:

      检查此问题的最佳方法是在不使用 -c # 的情况下运行此命令并检查它是否有效。如果它有效,请检查它在终端中打印的类名是与 -c 一起使用的类名

      adb shell uiautomator runtest UITestsMyAppBasis.jar

      【讨论】:

        猜你喜欢
        • 2013-06-28
        相关资源
        最近更新 更多