tests - android.util.AndroidException: INSTRUMENTATION_FAILED:
test implementation android (3)
Tengo una aplicación para Android simple y la estoy probando con mi teléfono. Entonces, hay dos maneras de hacer eso:
- Usando eclipse
- Utilizando CLI
Problema:
Cuando ejecuto el caso de prueba unitaria usando Eclipse, instala la aplicación en mi teléfono en tiempo de ejecución y ejecuto la prueba junit y luego, si uso el comando en la CLI: adb -d shell am instrument -w com.abc.xyz.test / android.test .InstrumentationTestRunner, funciona bien.
Sin embargo, si ejecuto directamente el comando anterior en CLI sin ejecutar primero los casos de prueba de la unidad en Eclipse, obtengo un error:
android.util.AndroidException: INSTRUMENTATION_FAILED: com.abc.xyz.test/android.test.InstrumentationTestRunner at com.android.commands.am.Am.runInstrument(Am.java:586) at com.android.commands.am.Am.run(Am.java:117) at com.android.commands.am.Am.main(Am.java:80) at com.android.internal.os.RuntimeInit.finishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:263) at dalvik.system.NativeStart.main(Native Method) INSTRUMENTATION_STATUS: id=ActivityManagerService INSTRUMENTATION_STATUS: Error=Unable to find instrumentation target package: com.abc.xyz INSTRUMENTATION_STATUS_CODE: -1
AndroidMAnifest.xml contiene:
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.abc.xyz"
inside instrumentation tag
Podría alguien ayudarme por favor
Asegúrese de desinstalar la aplicación anterior y reinstalar o iniciar la prueba solo después de desinstalar la aplicación anterior
Supongo que lo habrás resuelto desde enero, pero trabajo con herramientas de línea de comandos, encontré un problema similar (el mensaje de error es diferente) y lo resolví como lo explico en los siguientes pasos. Realizo todo el proceso desde la creación de un proyecto ficticio con su prueba vacía hasta una ejecución de prueba exitosa. Espero que pueda ser de utilidad para alguien:
Primer paso , crea el proyecto:
android create project
--name MyExample
--target "Google Inc.:Google APIs:17"
--path MyExample
--package com.example
--activity MyExampleActivity
Segundo paso , crear proyecto de prueba:
android create test-project
--path MyExampleTest
--name MyExampleTest
--main ../MyExample
Tercer paso , acceda al directorio de su proyecto, compílelo y verifique que el proceso finalice con éxito:
cd MyExample && ant debug
Cuarto paso , instálalo en el emulador:
adb -s emulator-5554 install -r bin/MyExample-debug.apk
Quinto paso , acceda a su directorio de proyecto de prueba e intente ejecutar las pruebas:
cd ../MyExampleTest &&
adb shell am instrument -w com.example.tests/android.test.InstrumentationTestRunner
Eso rinde:
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)
Sexto paso , haga una lista de sus clases de instrumentación y asegúrese de que falte su proyecto actual:
adb shell pm list instrumentation
Eso en mi máquina da lugar a:
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)
Como puede ver, la instrumentación para com.example.tests
no existe, por lo que tendremos que crearla.
Séptimo paso , construya su proyecto de prueba y verifique que lo hizo con éxito:
ant debug
En octavo paso , instálalo en el emulador:
adb -s emulator-5554 install -r bin/MyExampleTest-debug.apk
Noveno paso , enumere sus clases de instrumentación y busque la de su proyecto:
adb shell pm list instrumentation
Eso rinde:
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)
Mire el segundo al último, instrumentation:com.example.tests
, es lo que queríamos.
Décimo paso , ejecuta tus pruebas:
adb shell am instrument -w com.example.tests/android.test.InstrumentationTestRunner
Eso rinde:
Test results for InstrumentationTestRunner=
Time: 0.0
OK (0 tests)
Eso es todo. Ahora implementa tus pruebas, compila e instala como de costumbre. Además puedes eliminarlos como:
adb shell pm uninstall com.example.tests
Pero tendrá que volver a crear clases de instrumentación para evitar el mismo error.
Una explicación / enfoque más preciso es el siguiente:
Asegúrate de hacer
adb install -r bin/<>-debug.apk
Tanto desde las pruebas como desde el directorio de la aplicación.
Después de esa ant test
debería trabajar desde el directorio de pruebas. (Supongo que faltaba una dependencia a la aplicación del paquete de prueba, lo que estaba causando el error).
Aparte del pequeño truco anterior, el resto del procedimiento que seguí provino de la introducción de pruebas de Android en http://developer.android.com/ .