Как решить ClassNotFoundException при запуске uiautomator?

Я пытаюсь создать тесты графического интерфейса для своего приложения с помощью предоставленных инструментов из android-sdk для моего приложения. Для начала я настроил проект, как описано в 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 выполняется успешно, и я получаю файл jar в каталоге bin моего проекта. Но когда я пытаюсь запустить его через:

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

и вывод логарифма:

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)

я использую эмулятор андроида с

  • TargetName: API Google (Google Inc.)

  • Платформа: 4.1.2

  • Уровень API: 16

  • ЦП/ABI ARM (armeabi-v7a)

  • Устройство: 10,1-дюймовый WXGA (планшет) (1280x800; mdpi)

  • Параметры памяти: Ram: 512 VM Heap: 32

  • Внутренняя память: 200 МБ

  • SD-карта: 256 МБ

  • Параметры эмуляции: использовать хост-графический процессор

Установка chmod в /data/dalvik-cache, как описано в https://stackoverflow.com/a/13805869/1171328. вывод не изменился.


person CAA    schedule 25.06.2014    source источник


Ответы (2)


Я считаю, что это должно решить вашу проблему:

Параметр -c используется для запуска класса, а не пакета. так и должно быть:

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

person Anvesh Yalamarthy    schedule 26.06.2014

Лучший способ проверить эту проблему — запустить эту команду без использования -c # и проверить, работает ли она. Если это работает, проверьте, чтобы имя класса, которое он печатает в терминале, использовалось с -c

Оболочка adb uiautomator runtest UITestsMyAppBasis.jar

person arunkumarreddy    schedule 01.09.2015