Ошибка запуска Android uiautomator не нашла класс

недавно я попытался начать тестирование Android uiautomation.

Учебник с сайта разработчика, который я прорабатывал несколько раз, и после некоторых проблем и их решения, у меня возникла более серьезная проблема.

Я создал проект, импортировал два файла jar и создал тестовый сценарий Java (тот, что из учебника). После этого я создал проект uitest с командной строкой оболочки. обновил build.xml, создал файл jar и загрузил его на свое устройство.

Насколько хорошо все работало хорошо на этом этапе.

Но попробуйте запустить мои тесты с помощью командной строки:

adb -s <ANDROID_SERIAL> shell uiautomator runtest DeviceUnlocker.jar -c c.d.d.DeviceUnlocker

Я получаю только ошибку:

INSTRUMENTATION_RESULT: shortMsg = java.lang.RuntimeException
INSTRUMENTATION_RESULT: longMsg = Не удалось найти класс c.d.d.DeviceUnlockingPseudoCodeTest по пути: /system/framework/android.test.runner.jar: /system/framework/uiautomator.jar:: /data/local/tmp/DeviceUnlocker.jar

INSTRUMENTATION_CODE: 0


person Erik Mueller    schedule 14.10.2013    source источник
comment
не могли бы вы опубликовать часть своего кода?   -  person Rilwan    schedule 15.10.2013
comment
части моего кода были, в частности, с сайта разработчиков Android Developer и с этого сайта: EveryOneTests Единственный другой части кода от меня добавляли файл build.xml с кодом из моего ответа   -  person Erik Mueller    schedule 15.10.2013
comment
Пожалуйста, опубликуйте также дамп logcat, чтобы мы могли проверить, где находится RuntimeException.   -  person neeraj t    schedule 10.12.2013
comment
@ErikMueller Вам удалось получить правильный ответ? Я вижу много ответов, но ни один из них не принят. У меня похожая проблема, но ни один из них не сработал, поэтому я оставил вопрос здесь stackoverflow.com/q/32200292/347119 . Спасибо, если вы можете мне как-то помочь.   -  person Edison Spencer    schedule 25.08.2015
comment
@EdisonSpencer ни одно из опубликованных мне не помогло. Но я должен был сказать, что я не пытался в последнее время. Возможно, некоторые ошибки были устранены в последних обновлениях Android SDK. Вы проводите тесты внутри студии eclipse или android? Мой колледж заставил тесты работать, написав несколько сценариев bash.   -  person Erik Mueller    schedule 31.08.2015
comment
Привет @ErikMueller, я следовал инструкциям, показанным здесь (goo.gl/LxaJWN), поэтому я сделал следующее: создайте проект Eclipse и добавьте соответствующие зависимости. Но теперь проект приложения был экспортирован в Android Studio, может быть, мне стоит попробовать использовать тестовый пакет, созданный Android Studio? Ваш коллега может что-то сказать по моему посту? Спасибо   -  person Edison Spencer    schedule 31.08.2015
comment
Наконец, автоматизация пользовательского интерфейса была перенесена в Android Studio, поэтому попробуйте запустить свои тесты в Android Studio, это намного проще!   -  person Erik Mueller    schedule 23.11.2015


Ответы (6)


Хорошо, самый простой способ - создать внутри eclipse новый проект junit для Android.

я думаю, что это более или менее равно uiautomator. и я думаю, что у вас могут быть такие же возможности... поправьте меня, если я ошибаюсь...

uiautomator все еще не работает... и я также нашел некоторые ошибки в uibuild.xml из самого андроида

<target name="test" description="Runs tests"> <!-- todo: fix this --> <fail message="Launching tests from Ant not supported yet" />

     <exec executable="${adb}" failonerror="true">
        <arg line="${adb.device.arg}" />
        <arg value="shell" />
        <arg value="uiautomator" />
        <arg value="runtest" />
        <arg value="${out.filename}" />
        <arg value="-e" />
        <arg value="class" />
        <arg value="com.android.uiautomator.samples.skeleton.DemoTestCase" />
    </exec>
</target>`

Спасибо за вашу помощь. для меня uiautomator больше не вариант. С Уважением

person Erik Mueller    schedule 14.01.2014

  1. новый JavaProjekt (импорт JUnit android.jar uiautomator.jar
  2. создавать пакеты c.d.d
  3. Копировать TestCase Device Unlocking псевдоTestCase в Projekt
  4. запустить cmd 4.1. «установить ANDROID_HOME =» в местоположение SDK 4.2. \tools\ android create uitestprojekt -n name -t "android-16" -p projPath
  5. отредактируйте build.xml, созданный командой create: добавлен код:

<delete dir="jar"/>

<mkdir dir="jar" />

<javac destdir="bin" encoding="UTF-8" debug="on" target="1.6" includeantruntime="false"> 
    <src path="src" /> 
</javac> 
<jar destfile="jar/uiautomator.jar"> 
     <fileset dir="bin" /> 
</jar>
  1. запустить как муравейник
  2. cmd -> cd ANDROID_HOME-> cd инструменты платформы
  3. adb push /jar/uiautomator.jar data/local/tmp
  4. adb -s shell uiautomator runtest DeviceUnlocker.jar -c c.d.d.DeviceUnlocker

это были все шаги, которые я сделал

спасибо

person Erik Mueller    schedule 15.10.2013
comment
правильно ли он скомпилировался? он показывал какую-либо строку с [javac] ? ваш путь к проекту, указанный в команде create, верен? попробовать ant clean build ? Все еще не удается --> тогда вы могли бы просто попробовать какой-нибудь базовый код (скажем, просто разбудить устройство) в одиночку в своем классе и запустить.. Поскольку у меня была похожая проблема, мне пришлось очистить все вышеперечисленные ? один за другим. и это работает для меня. - person Rilwan; 16.10.2013
comment
Ну, после запуска этой строки в оболочке около сотни раз, я думаю, что правильно понял свою ссылку, и копирование и вставка ссылки не принесли никаких усилий. ну, я запускаю сборку ant в eclipse ide, потому что моя системная переменная среды не была установлена ​​​​для ant, и я понятия не имел, где ее найти внутри eclipse. что ты чистил наверху? я вижу только вопросительный знак :-) - person Erik Mueller; 17.10.2013
comment
и да, в eclipse он показывает строки javac и сборку jarfile - person Erik Mueller; 17.10.2013
comment
вы пробовали это с shell или cmd, вне eclipse. ? - person Rilwan; 20.10.2013
comment
cmd y есть ли разница? упомянув этот вопрос, я уже видел, что помимо cmd есть еще и оболочка .. waow wtf, я никогда раньше этого не видел - person Erik Mueller; 22.10.2013

Убедитесь, что вы скомпилировали классы Java в android dex!

Я столкнулся с той же проблемой, когда поместил чистый пакет java «jar» в /data/tmp/.

Предположим, ваш проект device-unlock:

cd device-unlock
android create uitest-project -n device-unlock -t 1 -p .
and build

Теперь вы найдете пакет dexed jar в bin/device-unlock.jar, откройте его с помощью zip, вы увидите classes.dex.

С этой банкой все должно быть в порядке, чтобы продолжить ваш тест.

person Evans Y.    schedule 18.12.2013

У меня была точно такая же проблема, и я сделал быстрый хакс, чтобы исправить это:

Решите это следующим образом:

  1. перейдите к проекту UiaautomationTest и из папки bin/ скопируйте файлы классов. В моем случае я скопировал всю структуру папок com/poc/MyTest.class.
  2. перейдите в проект App-Under-Test и в папку bin/ мимо данных класса. В моем случае com/poc/MyTest.class объединяется с существующими классами в com/
  3. Пересоберите проект UiAutomation с помощью «ant build».
  4. повторно разверните, и теперь вы можете запустить его!

Это просто обходной путь, но он идентифицировал основной случай — класс testcase исключен из этапа сборки UiAutomator.

person gemigis    schedule 20.12.2013

Во время запуска команды uiautomator Tests запустите ее следующим образом.

Пример:

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings
adb shell uiautomator runtest "jar name" -c "packagename"."Classname"

Это должно работать.

person Sathishwaran    schedule 28.12.2013

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

adb -s shell uiautomator runtest DeviceUnlocker.jar
person arunkumarreddy    schedule 01.09.2015