如何在uiautomator启动时解决ClassNotFoundException?

时间:2014-06-25 10:04:12

标签: android uiautomator gui-testing

我尝试使用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)

我正在使用带有

的Android模拟器
  • TargetName: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并没有改变输出。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

一起使用的类名

adb shell uiautomator runtest UITestsMyAppBasis.jar