solucion sae pudo operacion index error desplegar coi aspel android gradle android-testing

android - sae - list index out of bounds(9)



Falló la ejecución de la prueba: no se pudo encontrar la información de instrumentación para: ComponentInfo{}-error al intentar probar en IntelliJ con Gradle (9)

Así que el principal problema fue que cuando creé una carpeta androidTest bajo / src /, IntelliJ no la estaba recogiendo como una carpeta fuente para probar (el subdirectorio java debería ponerse verde). Estaba usando IntelliJ 13.0.3 y después de actualizar a 13.1.3, todos mis problemas desaparecieron.

* Nota: no intente agregar un manifiesto a su carpeta androidTest, los documentos de Gradle especifican que el manifiesto debe generarse automáticamente cuando crea la carpeta androidTest. El problema para mí fue que el archivo no se generaba ya que el IntelliJ / Gradle no reconocía el Android Test y arrojaba el error de no instrumentación.

Cada vez que intento ejecutar mis pruebas, la consola dice esto:

Running tests Test running startedTest running failed: Unable to find instrumentation info for: ComponentInfo{com.employeeappv2.employeeappv2.test/android.test.InstrumentationTestRunner} Empty test suite.

He estado atrapado en esto por un tiempo y las soluciones que he visto en línea hasta ahora no han ayudado. La estructura de mi proyecto está configurada así:

* Módulo principal -src * instrumentTest -java * main -java -manifest * build.gradle

Mi archivo build.gradle se ve así:

buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.9.+'' } } apply plugin: ''android'' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { minSdkVersion 16 targetSdkVersion 19 versionCode 1 versionName "2.1.0" testPackageName "login.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard- rules.txt'' } } packagingOptions { exclude ''META-INF/LICENSE'' exclude ''META-INF/NOTICE'' exclude ''META-INF/notice.txt'' exclude ''META-INF/license.txt'' } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile files(''libs/scandit.zip'') compile project('':pullToRefresh'') compile ''com.android.support:appcompat-v7:19.+'' compile ''com.nostra13.universalimageloader:universal-image-loader:1.9.1+'' compile ''org.springframework.android:spring-android-rest-template:1.0.1+'' compile ''org.json:json:20090211'' compile ''com.fasterxml.jackson.core:jackson-databind:2.3.1'' compile ''com.fasterxml.jackson.core:jackson-annotations:2.3.0'' compile ''com.fasterxml.jackson.core:jackson-core:2.3.1'' compile ''com.android.support:support-v4:19.1.+'' compile ''com.mcxiaoke.volley:library:1.0.+@aar'' androidTestCompile ''junit:junit:3.8'' }

¿Necesita tener un manifiesto por separado para su directorio de pruebas? Si es así, ¿qué aspecto tendría?

Editar: Intenté agregar un manifiesto a mi directorio instrumentalTest sin suerte. Tenga en cuenta que no pude hacer que IntelliJ resolviera el nombre de TargetPackage, por lo que aparece en rojo.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.employeeappv2.employeeappv2.src.instrumentTest" android:versionCode="1" android:versionName="1.0.0"> <application> <uses-library android:name="android.test.runner" /> </application> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.employeeappv2.employeeappv2.src.main"/> </manifest>


Cuando creé un nuevo paquete, Studio creó una clase ApplicationTest. Utilizando us.myname.mypackage como ejemplo, se creó la siguiente estructura de directorio:

app/[myPackage]/src/androidTest/java/us/myname/mypackage/ApplicationTest.class

Inicialmente funcionó de la caja. Dejó de funcionar después de que instalé los sabores del producto. Posteriormente, realicé los siguientes cambios en build.gradle:

defaultConfig { ... testInstrumentationRunner "android.test.InstrumentationTestRunner" }

algunos prefieren

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

(Con mi configuración actual, tengo que usar ...InstrumentationTestRunner cuando está en depuración, y AndroidJUnitRunner mientras uso el tipo de compilación de versiones).

La configuración anterior solo funciona con el tipo de compilación de depuración. Si desea usarlo con versión o con un tipo de compilación personalizado, puede incluir lo siguiente en build.gradle:

buildTypes { release { ... } debug { ... } } testBuildType "release"

En la pestaña Variantes de compilación, en la parte inferior izquierda de Studio, asegúrese de tener Android Instrumentation Tests y el buildType correcto seleccionado.


Esto es lo que noté en mi proyecto, en mi aplicación (principal) module build.gradle tuve la siguiente configuración buildType

buildTypes { debug { multiDexEnabled true } mock { initWith(buildTypes.debug) } } testBuildType "mock"

Cuando utilicé AndroidJUnitRunner como el corrector de prueba (ambos de Android Studio) y como testInstrumentationRunner en build.gradle, las pruebas se ejecutaron sin problemas.

En un submódulo que tenía multiDexEnabled true como defaultConfig

defaultConfig { multiDexEnabled true .... }

Me encontré con el problema de

Test running startedTest running failed: Unable to find instrumentation info for:{mypackage.x.y/android.support.test.runner.AndroidJUnitRunner"}

cuando especifiqué AndroidJUnitRunner en IDE y en el submódulo build.gradle. Y esto se solucionó especificando MultiDexTestRunner como el corredor de prueba en IDE / build.gradle.

Para resumir, use MultiDexTestRunner para ejecutar pruebas cuando se especifica multiDexEnabled true en build.gradle, sino use AndroidJUnitRunner como el corredor de prueba.


Estoy usando Android Studio 1.1 y los siguientes pasos resolvieron este problema para mí:

  1. En Run - Edit Configurations - Android Tests
    Especifique el corredor de instrumentación como android.test.InstrumentationTestRunner

  2. Luego, en la ventana de la herramienta "Variantes de compilación" (a la izquierda), cambie el artefacto de prueba a Android Instrumentation Tests .

No se requiere testInstrumentationRunner en build.gradle y no se requiere una etiqueta de instrumentación en el archivo de manifiesto.


La solución para mi problema es cambiar el nombre del método de

@Test public void test(){ ... }

a

@Test public void testSomething(){ ... }

Espero que ayude a alguien.


Por lo que vale, AS 2.3 se colgó cuando creé un corredor de prueba personalizado después de usar el corredor de prueba regular. Recibí el mismo error que se publicó en la pregunta.

Al eliminar las configuraciones de depuración para TODAS las pruebas instrumentadas de Android y la reconstrucción, se corrigió. Creo que el problema radica en el hecho de que ya no se puede elegir un corredor personalizado en las Configuraciones de depuración, ya que es muy probable que esté integrado en gradle.


Tuve el mismo error cuando intenté agregar multiDexEnabled true para build.gradle .

Estoy agregando mi experiencia aquí, porque este es uno de los primeros hits de Google al buscar con ... Unable to find ... ComponentInfo ... Mensaje de error de ... Unable to find ... ComponentInfo ...

En mi caso, agregar testInstrumentationRunner como aquí hizo el truco:

... android { ... defaultConfig { ... testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } }

(Tengo com.android.tools.build:gradle:1.5.0 )


Tuve este problema y lo solucioné yendo a Ejecutar -> Editar configuraciones -> Botón verde ''+'' en la esquina superior izquierda -> JUnit

A partir de ahí, configure ''use the classpath mod ...'' en ''app'' (o su nombre de aplicación predeterminado, que es el que aparece a la izquierda de la ejecución (botón de reproducción) cuando ejecuta la aplicación)

Finalmente, ponga su nombre de clase de prueba en el cuadro de texto ''clase:''. Haga clic en aplicar y está bien.

En este punto, si la clase de prueba no tiene otros errores, debería funcionar.


Tuve que hacer una combinación de la answer de VikingGlen, la answer Liuting y this respuesta. Esta respuesta funciona para Android Studio versión 2.1.

  1. Ejecutar -> Editar configuraciones ... -> General -> Ejecutor de instrumentación específico (opcional): "android.support.test.runner.AndroidJUnitRunner"

  2. En build.gradle (el que tiene todas tus dependencias), pon esto:

    defaultConfig { testInstrumentationRunner ''android.support.test.runner.AndroidJUnitRunner'' }

Entonces podría ejecutar pruebas de este tipo:

@RunWith(AndroidJUnit4.class) @LargeTest public class ApplicationTest { @Rule public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class); @Test public void login() { //Open Drawer to click on navigation. onView(withId(R.id.drawer_layout)) .check(matches(isClosed(Gravity.LEFT))) // Left Drawer should be closed. .perform(open()); // Open Drawer } }