2009-06-17 17 views
62

Recibo este error al intentar ejecutar pruebas unitarias desde Eclipse con un proyecto de Android. La lista de corredores de prueba de instrumentación está vacía en las preferencias de Android.Complemento de Android Eclipse: Instrumentation Test Runner no especificado

[2009-06-17 23:57:51 - MyApp] ERROR: Application does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner

también es molesto decidió que ya he tratado de realizar una prueba de unidad de una vez, que es lo que siempre quiero hacer.

+0

Android es incompatible con junit4. Use JUnit3 y todo comienza a funcionar. –

Respuesta

59

En el Run Configuration es posible que tenga Android JUnit Test, si hay nuevas entradas de configuración de lanzamiento dentro de este, que lo elimine y luego ejecutar la aplicación se ejecutará.

NOTA - Esta podría ser la solución si intentó ejecutar el caso de prueba antes de agregar las líneas correctas al manifiesto como se describe en la respuesta de Josef. Si ha hecho esto, elimine la configuración (que se quejará de que no se ha especificado ningún corredor de prueba de instrumentación en su encabezado) y luego ejecútela como una Prueba de Android Junit y creará una configuración válida que recoja las cosas correctas que usted han agregado al manifiesto (ver la respuesta de Josef para esto).

+0

Gracias trabajado para mí – Rauf

+0

genial !! funciona ... – hitesh141

111

Probablemente se esté perdiendo los uses-library y instrumentation nodos en su AndroidManifest.xml:

<manifest ...> 
    <application ...> 
     <!-- ... --> 
     <uses-library android:name="android.test.runner" /> 
    </application> 
    <instrumentation android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="your.package" 
     android:label="your tests label" /> 
</manifest> 
+1

gracias! también el nombre del paquete incorrecto puede ser la causa – Karussell

+0

Obtuve este error después de cambiar el nombre de mi paquete en XML. Una vez que ejecuté un programa limpio (y Android actualizó mis configuraciones de ejecución) lo solucionó. – Ring

+7

Yo hubiera votado dos veces esto si pudiera. Nota para uno mismo: uses-library va dentro del elemento de la aplicación. –

9

sólo hacer un clic derecho en su clase de prueba del IDE Eclipse y haga clic en "Ejecutar como". Después de esto, seleccione "Ejecutar configuración", que abrirá una Ventana de configuración en eclipse y tendrá que hacer clic en el botón de radio junto al "Instrumentation Runner" y seleccionar el Runner de instrumentación configurado en el menú desplegable. Ahora haga clic en aplicar y luego haga clic en Ejecutar. Creo que esto resolverá su problema.

Gracias, Smruti

+1

Esa es la respuesta correcta cuando quieres ejecutar una sola clase de prueba y ya tienes la instrumentación definida y uses-library en tu manifiesto. –

0

El problema es que cuando creó el proyecto, habría tenido un AVD, por lo que esta configuración faltaría. Mi sugerencia es crear primero el AVD y luego crear el proyecto de Android :).

Si ya ha creado el proyecto y si no tiene mucho código que haya escrito, le sugiero que lo elimine y cree uno nuevo.

2

No está en su código, es solo eclipse, es un poco problemático. En las configuraciones de ejecución podría estar intentando ejecutar una prueba jUnit, pero seleccione Ejecutar aplicación y ese error desaparecerá.

18

Una cosa que noté en esta discusión que podría molestar a algunas personas es que necesitas asegurarte de que el elemento "instrumentación" en tu manifiesto es hijo de "manifiesto" y no de "aplicación". (Los ejemplos aquí son correctas, pero tan fácil de mezclar.)

http://developer.android.com/guide/topics/manifest/instrumentation-element.html

Si pones tus cosas instrumentación dentro de la aplicación, no va a ser recogido, y sus opciones en el plug-in de Eclipse para ADT El corredor de instrumentación puede estar en blanco. (Pero no hay error se lanza o se muestra, etc.)

+4

y uses-library necesita ser un hijo de la aplicación – Jeb

1

Además de asegurar que los puntos que siguen son declarados en el manifiesto de la aplicación de prueba, el registro de la configuración de ejecución que el campo "corredor de instrumentación" se establece en

"com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner". 

Esto con lo que me encontré al averiguar por qué lo prueba no se ejecutará.

Manifiesto:

<instrumentation android:name="android.test.InstrumentationTestRunner" 
android:targetPackage="your.package" 
android:label="your tests label" /> 

and... 

<uses-library android:name="android.test.runner" /> 
Cuestiones relacionadas