Se ha producido un error en la ejecución de la prueba: La ejecución de la instrumentación ha fallado debido a 'java.lang.ClassNotFoundException'

Esta es la primera vez que configuro un android test project de prueba de android project para probar un android project .

He creado un caso de prueba muy básico que estoy tratando de ejecutar, sin embargo lo que tengo no se ejecuta. Tengo una Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException' .

Yo solucionaría esto más, sin embargo no consigo más información, como la clase que está tratando de encontrar, etc ¿Ideas sobre cómo obtener más información del error? ¿Cualquier área común que debo mirar, o cualquier cosa que pudiera necesitar ser configurado que estoy pasando por alto?

A continuación se muestra la información de la consola:

 [2013-04-16 13:21:49 - XyzProgramTest] Android Launch! [2013-04-16 13:21:49 - XyzProgramTest] adb is running normally. [2013-04-16 13:21:49 - XyzProgramTest] Performing android.test.InstrumentationTestRunner JUnit launch [2013-04-16 13:21:49 - XyzProgramTest] Automatic Target Mode: launching new emulator with compatible AVD 'GalaxyNexusAPI_17' [2013-04-16 13:21:49 - XyzProgramTest] Launching a new emulator with Virtual Device 'GalaxyNexusAPI_17' [2013-04-16 13:21:53 - Emulator] extension WGL_ARB_make_current_read was not found [2013-04-16 13:21:53 - Emulator] extension WGL_EXT_swap_control was not found [2013-04-16 13:21:53 - Emulator] Failed to create pbuf surface for FB 0x3004 [2013-04-16 13:21:53 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer. [2013-04-16 13:21:54 - XyzProgramTest] New emulator found: emulator-5554 [2013-04-16 13:21:54 - XyzProgramTest] Waiting for HOME ('android.process.acore') to be launched... [2013-04-16 13:22:55 - XyzProgramTest] HOME is up on device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Uploading XyzProgramTest.apk onto device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Installing XyzProgramTest.apk... [2013-04-16 13:23:57 - XyzProgramTest] Success! [2013-04-16 13:23:57 - XyzProgramTest] Project dependency found, installing: XyzProgram [2013-04-16 13:23:57 - XyzProgram] Uploading XyzProgram.apk onto device 'emulator-5554' [2013-04-16 13:23:58 - XyzProgram] Installing XyzProgram.apk... [2013-04-16 13:24:05 - XyzProgram] Success! [2013-04-16 13:24:05 - XyzProgramTest] Launching instrumentation android.test.InstrumentationTestRunner on emulator-5554 [2013-04-16 13:24:07 - XyzProgramTest] Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException' 

Notas adicionales:

En mi android test project , he creado una prueba sencilla con un paquete similar al del paquete que coincide con la clase que intento probar en mi android project . Así que algo como com.company.android.projectname . Lo he especificado en la sección de instrumentation del archivo de manifest android test project .

 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.company.android.projectname" /> 

Cuando cambié esto para emparejar eso, consigo un nuevo error que dice que la Test run failed: Unable to find instrumentation target package: com.company.android.projectname

No estoy 100% seguro de lo que targetPackage debe ser y si necesito múltiples instrumentaciones para cada paquete que quiero probar, etc Cuando lo configuro para com.company.android que es cuando recibo el java.lang.ClassNotFoundException . Cualquier sugerencia sería apreciada, mientras tanto continuaré mis esfuerzos para resolver esto por mi cuenta.

Calculado mi problema y estoy publicando la respuesta para fines de documentación …

La raíz de mi problema era 2 cosas diferentes:

  1. Hice un poco de refactorización, que cambia la ubicación de mi clase android.app.Application y mis actividades. Esto lo hizo así que mi programa principal no funcionaba ya que necesitaba actualizar mi manifiesto en mi android project .
  2. Después de hacer las actualizaciones de mi manifiesto en mi proyecto de Android, tuve que hacer algunas actualizaciones en mi android test project para señalar a la ubicación actualizada de la clase que se extiende android.app.Application .

Después de eso, hizo algunos limpia y probó de nuevo y las cosas eran buenas.

FYI me encontré con esto y tuve que añadir

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

dentro de mi etiqueta <application/>

Tuve este problema después de una fusión, en el que build.gradle estaba especificando el paquete de prueba equivocado, ya que había estado utilizando el valor predeterminado.

Simplemente eliminando estas líneas de build.gradle, fue capaz de encontrar las clases necesarias en el paquete predeterminado, que es src/androidTest .

 sourceSets { instrumentTest.setRoot('src/instrumentTest') } //removed this to use the default androidTest source set. 

Esto probablemente no será la solución exacta, pero con suerte guía a alguien en la dirección correcta.

He encontrado este problema hoy, he adoptado android-specific ant build.xml que sentado en el directorio "$ {sdk.dir} / tools / ant /" para realizar todos los casos de prueba en la línea de comandos, pero el STDOUT informa de error para mí como el tuyo:

 vinceMacBook ~/dev/aSQLite+-android/tests$ ant clean uninstall debug install test ... test: [echo] Running tests ... [exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.ClassNotFoundException [exec] INSTRUMENTATION_RESULT: longMsg=java.lang.ClassNotFoundException: android.test.InstrumentationTestRunner [exec] INSTRUMENTATION_CODE: 0 

Me paso un tiempo para averiguar esto, encontré la causa principal debido en el módulo de la raíz AndroidManifest.xml , pensé que el elemento de aplicación no es nada para ser configurado por lo que omitió en el elemento de manifiesto , que causan mi problema.

No estoy seguro de compartir la misma estructura conmigo, por lo que publicar mi estructura de proyecto aquí, también el contenido del archivo clave, la esperanza puede ayudar a alguien.

 vinceMacBook ~/dev/aSQLite+-android$ tree . ├── AndroidManifest.xml │ <?xml version="1.0" encoding="utf-8"?> │ <manifest │ xmlns:android="http://schemas.android.com/apk/res/android" │ package="com.vincestyling.asqliteplus" │ android:versionCode="1" │ android:versionName="0.1"> │ │ <uses-sdk android:minSdkVersion="8" /> │ │ <!-- important configuration, cannot be omit even if nothing to say. --> │ <application /> │ │ </manifest> │ ├── build.xml │ unchanged, generated by "android create project <project_name>" command. │ ├── project.properties │ unchanged, generated by "android create project <project_name>" command. │ ├── src │  └── com │  └── vincestyling │  └── asqliteplus │  ├── DBOperator.java │  ├── DBOverseer.java │  └── the library source code lie here... │ └── tests ├── AndroidManifest.xml │ <?xml version="1.0" encoding="utf-8"?> │ <manifest │ xmlns:android="http://schemas.android.com/apk/res/android" │ package="com.vincestyling.asqliteplus.tests"> │ │ <application> │ <uses-library android:name="android.test.runner"/> │ </application> │ │ <instrumentation │ android:name="android.test.InstrumentationTestRunner" │ android:targetPackage="com.vincestyling.asqliteplus"/> │ │ </manifest> │ ├── ant.properties │ # [Comments], [Comments], [Comments] which generated by command. │ # [Comments], [Comments], [Comments] which generated by command. │ # [Comments], [Comments], [Comments] which generated by command. │ │ # important configuration, point to the root library module. │ tested.project.dir=../ │ ├── build.xml │ unchanged, generated by "android create test-project <project_name>" command. │ └── src  └── com  └── vincestyling  └── asqliteplus  ├── BaseDBTest.java ├── QueryStatementTest.java └── the test source code lie here... 

Mi estructura del proyecto siguió la descripción de los proyectos de la prueba del androide que Google nos sugiere para hacer, consisten en el módulo de la biblioteca de la raíz que llevando la lógica de la base, y el módulo de la prueba que dentro del módulo de la raíz. Arriba están los recursos clave en el proyecto, pero no todos los archivos, voy a publicar el vínculo del proyecto aquí una vez que lo suelten.

———— Actualización 2014-01-06 ————–

Actualmente, mi proyecto se publicó en mi github: aSQLitePlus-android , compruebe los detalles si está interesado.

  • Webcam para probar cámara en Android AVD?
  • Eclipse no crea actividad principal y diseño
  • ¿Por qué no encontrar android en com.google.gson.Gson
  • Phonegap - Leer sub-directorios?
  • El depurador de Eclipse se detiene solo
  • No hay salida de comando al ejecutar: 'am start -n
  • Convertir doc en PDF en android, No se puede ejecutar dex
  • De Eclipse a teléfono Android
  • Tiempo incorrecto en Eclipse. ¿Cómo cambiarlo?
  • Android - java.lang.ClassNotFoundException: No encontró la clase "..." en path: / data / app /
  • Archivos de solicitud de clase no empacados en APK
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.