2011-07-07 14 views
6

Estoy tratando de integrar las pruebas de Android JUnit con nuestras compilaciones de Bamboo Ant. Ya probé la configuración localmente, y puedo ejecutar pruebas.Android: Cómo instalar el Instrumentation APK en un AVD en un host sin cabeza

Pero cuando probé la misma configuración en nuestro servidor de bambú, me sale el siguiente error al ejecutar las pruebas:

INSTRUMENTATION_STATUS: id=ActivityManagerService 
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.synapticstuff.guitartabs/pl.polidea.instrumentation.PolideaInstrumentationTestRunner} 
INSTRUMENTATION_STATUS_CODE: -1 
android.util.AndroidException: INSTRUMENTATION_FAILED: com.synapticstuff.guitartabs/pl.polidea.instrumentation.PolideaInstrumentationTestRunner 

Tenga en cuenta que he usado una biblioteca personalizada para Instrumentación (http://code.google.com/p/the-missing-android-xml-junit-test-runner/), de modo que pueda extraiga los resultados de la prueba JUNit xml y suminístrelo a Bamboo.

Además, el agente de compilación utilizado para crear la compilación es una máquina virtual de Ubuntu, que no tiene ninguna GUI, así que tengo que hacer todo a través de la línea de comandos. Un AVD ya se está ejecutando en esa máquina virtual.

Tuve el mismo problema la primera vez que ejecuté el comando adb shell am instrument .. <snip> localmente, y me pareció raro que funcionara después de ejecutar la prueba desde Eclipse.

Mirando hacia arriba el registro de errores, el artículo Android Instrumentation Framework me dice que

"Es posible que el apk instrumentación no está instalado en su dispositivo o que el nombre del paquete es incorrecta en el archivo de manifiesto "

así que debe ser que la apk de instrumentación no esté instalada.

Entonces, ¿cómo instalo la apk de instrumentación en el AVD?

Gracias!

Respuesta

2

Existe otro posible motivo: el nombre del paquete es incorrecto en el archivo Manifest.

¡Primero compruebe el nombre del paquete en el archivo de manifiesto de su proyecto de prueba!

+0

¡excelente respuesta! Gracias – Snicolas

1

También soy una de las pocas personas que descargué ese InstrumentationTestRunner personalizado (http://code.google.com/p/the-missing-android-xml-junit-test-runner/) y actualmente estoy atascado en este tema. Recibo el mismo mensaje de error, desafortunadamente no sé la respuesta en este momento, pero lo actualizaré cuando descubra algo útil. Mientras tanto busqué otras opciones como la de esta persona prueba Runner: http://www.alittlemadness.com/2010/07/14/android-testing-xml-reports-for-continuous-integration/

También hay otra discusión relacionada con la integración continua: How to Generate Android Testing Report in HTML Automatically

1

se puede, quizás, solucionar esto, si se agrega a su escritura de la estructura:

adb install -r testproject/bin/testproject.apk 

la caja primero cómo el apk-archivo está siendo llamado, porque todavía no averiguar, cómo la hormiga se va a hacer eso exactamente, pero está siendo creado por lo general en bin directorio.

Consulte también la documentación oficial de Android.

-1

Me encontré con exactamente el mismo problema con la ejecución de una versión de Android en Bamboo. Descubrí que, por alguna razón, el elemento android:targetPackage en el manifiesto de mi proyecto de prueba era incorrecto. Estaba destinado a ser el paquete de mi proyecto principal, no el proyecto de prueba.Por alguna razón, ejecutar al ejecutar las pruebas en eclipse todo funcionó bien, pero murió cuando traté de ejecutar la prueba ant en la línea de comando. La etiqueta de instrumentación de instrumentación dice:

<instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.example.blah" /> 

Esto fue generado automáticamente por eclipse cuando creé el proyecto. Lo cambié para leer:

<instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.example.blah.test" /> 

y de repente todo funcionó bien.

3

Probablemente haya varias situaciones que pueden causar este error, pero lo obtuve al no tener instalada una versión instrumentada del paquete de prueba en el emulador. La documentación es un poco escasa, pero no creo que haya una "APK de instrumentación" que instale en el emulador (al menos no pude encontrar tal cosa); construyes tu aplicación de prueba con instrumentación incluida. De todos modos, esta es la forma corro pruebas desde la línea de comandos usando la hormiga, que ahora funciona:

ant instrument install test 

y esto también funciona ejecuta en Jenkins usando el plugin emulador de Android (https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator+Plugin). Encontré la tarea del instrumento en la documentación de compilación de la línea de comandos aquí: http://developer.android.com/tools/building/building-cmdline.html.

0

Me encontré con este problema al ejecutar mis pruebas contra un antiguo dispositivo virtual Android 1.5. Después de cambiar a un dispositivo virtual 2.3.3, el problema desapareció. No sé si el problema se debe a que el sistema operativo del dispositivo virtual está viejo o si el dispositivo virtual se está creando con herramientas antiguas de Android SDK.

Cuestiones relacionadas