Android.util.AndroidException: INSTRUMENTATION_FAILED:

У меня есть простое приложение для Android, и я тестирую его с помощью своего телефона. Итак, есть два способа сделать это:

  1. Использование eclipse
  2. Использование CLI

Проблема:

Когда я запускаю блок-тест с использованием Eclipse, он устанавливает приложение на моем телефоне во время выполнения и запускает junit-тест, а после этого, если я использую команду в CLI: adb -d shell am instrument -w com.abc.xyz.test / android.test .InstrumentationTestRunner, он работает нормально.

Тем не менее, если я непосредственно запускаю указанную выше команду в CLI без предварительного запуска модульных тестовых примеров в Eclipse, я получаю ошибку:

 Android.util.AndroidException: INSTRUMENTATION_FAILED: com.abc.xyz.test / android.test.InstrumentationTestRunner
         На com.android.commands.am.Am.runInstrument (Am.java:586)
         На com.android.commands.am.Am.run (Am.java:117)
         На com.android.commands.am.Am.main (Am.java:80)
         At com.android.internal.os.RuntimeInit.finishInit (собственный метод)
         At com.android.internal.os.RuntimeInit.main (RuntimeInit.java:263)
         В dalvik.system.NativeStart.main (родной метод)
 INSTRUMENTATION_STATUS: id = ActivityManagerService
 INSTRUMENTATION_STATUS: Ошибка = Невозможно найти целевой пакет инструментов: com.abc.xyz
 INSTRUMENTATION_STATUS_CODE: -1

AndroidMAnifest.xml содержит:

android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.abc.xyz" inside instrumentation tag 

Может ли кто-нибудь помочь мне

Solutions Collecting From Web of "Android.util.AndroidException: INSTRUMENTATION_FAILED:"

Я полагаю, что вы решите его с января, но я работаю с инструментами командной строки, нашел аналогичную проблему (сообщение об ошибке отличается) и решил ее, как я объясняю в следующих шагах. Я делаю весь процесс от создания фиктивного проекта с его пустым тестом до успешного тестового прогона. Надеюсь, это может быть полезно для кого-то:

На первом этапе создайте проект:

 android create project --name MyExample --target "Google Inc.:Google APIs:17" --path MyExample --package com.example --activity MyExampleActivity 

Второй шаг : создать тестовый проект:

 android create test-project --path MyExampleTest --name MyExampleTest --main ../MyExample 

Третий шаг , доступ к вашему каталогу проектов, его сбор и проверка успешного завершения процесса:

 cd MyExample && ant debug 

Четвертый шаг , установите его в эмулятор:

 adb -s emulator-5554 install -r bin/MyExample-debug.apk 

Пятый шаг , доступ к вашему каталогу тестовых проектов и попытка запуска тестов:

 cd ../MyExampleTest && adb shell am instrument -w com.example.tests/android.test.InstrumentationTestRunner 

Это дает:

 INSTRUMENTATION_STATUS: id=ActivityManagerService INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.example.tests/android.test.InstrumentationTestRunner} INSTRUMENTATION_STATUS_CODE: -1 android.util.AndroidException: INSTRUMENTATION_FAILED: com.example.tests/android.test.InstrumentationTestRunner at com.android.commands.am.Am.runInstrument(Am.java:676) at com.android.commands.am.Am.run(Am.java:119) at com.android.commands.am.Am.main(Am.java:82) 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) 

Шестой шаг , перечислите свои приборы и убедитесь, что ваш текущий проект отсутствует:

 adb shell pm list instrumentation 

То, что в моей машине дает:

 instrumentation:com.android.emulator.connectivity.test/android.test.InstrumentationTestRunner (target=com.android.emulator.connectivity.test) instrumentation:com.android.emulator.gps.test/android.test.InstrumentationTestRunner (target=com.android.emulator.gps.test) instrumentation:com.android.example.spinner.tests/android.test.InstrumentationTestRunner (target=com.android.example.spinner) instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest) instrumentation:com.android.smoketest.tests/android.test.InstrumentationTestRunner (target=com.android.smoketest) instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis) 

Как вы можете видеть, инструментарий для com.example.tests не существует, поэтому нам придется его создавать.

Седьмой шаг , постройте тестовый проект и убедитесь, что он успешно выполнен:

 ant debug 

Шаг Eigth , установите его в эмулятор:

 adb -s emulator-5554 install -r bin/MyExampleTest-debug.apk 

На девятом этапе перечислите классы инструментов и найдите один из ваших проектов:

 adb shell pm list instrumentation 

Это дает:

 instrumentation:com.android.emulator.connectivity.test/android.test.InstrumentationTestRunner (target=com.android.emulator.connectivity.test) instrumentation:com.android.emulator.gps.test/android.test.InstrumentationTestRunner (target=com.android.emulator.gps.test) instrumentation:com.android.example.spinner.tests/android.test.InstrumentationTestRunner (target=com.android.example.spinner) instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest) instrumentation:com.android.smoketest.tests/android.test.InstrumentationTestRunner (target=com.android.smoketest) instrumentation:com.example.tests/android.test.InstrumentationTestRunner (target=com.example) instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis) 

Посмотрите на второе, наконец, instrumentation:com.example.tests , это то, что мы хотели.

Десятый шаг , выполните ваши тесты:

 adb shell am instrument -w com.example.tests/android.test.InstrumentationTestRunner 

Это дает:

 Test results for InstrumentationTestRunner= Time: 0.0 OK (0 tests) 

Вот и все. Теперь выполняйте свои тесты, компилируйте и установите как обычно. Кроме того, вы можете удалить их, как:

 adb shell pm uninstall com.example.tests 

Но вам нужно будет снова создать классы инструментов, чтобы избежать такой же ошибки.

Более точное объяснение / подход заключается в следующем:

Убедитесь, что вы

 adb install -r bin/<>-debug.apk 

Как из тестов, так и из каталога приложений.

После этого ant test должен работать из каталога тестов. (Моя догадка заключается в том, что в приложении из тестового пакета отсутствовала зависимость, что вызывало отказ).

Помимо вышеупомянутого небольшого взлома, остальная часть процедуры, которую я соблюдала, была получена из введения тестирования Android на http://developer.android.com/ .

Убедитесь, что вы удалили предыдущее приложение и переустановите или отпустите тест только после удаления предыдущего приложения.