No se pudo encontrar la información de instrumentación para: ComponentInfo {} – error intentando probar en IntelliJ con Gradle
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. Mi estructura de proyecto se establece así:
- La red es inaccesible: connect
- Ejecute la tarea firebaseUploadReleaseProguardMapping desde el archivo app / build.gradle
- ¿Cómo excluir archivos de recursos con Gradle y Android Studio?
- Gradle build Error: Causa: org.gradle.api.internal.ExtensibleDynamicObject
- archivos duplicados copiados en APK META_INF / NOTICE
* Módulo Principal -src * instrumentTest -java * main -java -manifest * build.gradle
Mi archivo build.gradle tiene este aspecto:
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 separado para su directorio de pruebas? Si es así, ¿cómo sería?
Edit: He intentado agregar un manifiesto a mi directorio instrumentTest sin suerte. Tenga en cuenta que no pude obtener IntelliJ para resolver el nombre 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>
- Plugin experimental de Android Gradle de ejecución instantánea
- Eclipse utiliza la variable PATH antigua para ejecutar el proceso de línea de comandos en la tarea Gradle?
- Agregue la dependencia al productFlavor específico y buildType en gradle
- Obtener error Gradle "No se pudo reservar espacio suficiente para montón de objetos" constantemente en Intellij IDEA
- Migración de Eclipse a Android Studio Error El contenido no está permitido en prolog
- Multiple signingConfigs para múltiples variantes
- Cómo importar el proyecto android como biblioteca y NO compilarlo como apk (Android studio 1.0)
- Problemas de renderizado después de las dependencias gradle actualizadas
Estoy usando Android Studio 1.1 y los siguientes pasos solucionaron este problema para mí:
-
En
Run - Edit Configurations - Android Tests
Especifique el corredor de instrumentación comoandroid.test.InstrumentationTestRunner
-
A continuación, en la ventana de herramientas "Construir variantes" (a la izquierda), cambie el artefacto de prueba a
Android Instrumentation Tests
.
No se requiere testInstrumentationRunner en build.gradle y no se requiere ninguna etiqueta de instrumentación en el archivo de manifiesto.
Tuve el mismo error cuando intenté agregar multiDexEnabled true
a build.gradle
.
Estoy agregando mi experiencia aquí, porque este es uno de los primeros golpes de Google al buscar con el ... Unable to find ... ComponentInfo ...
message.
En mi caso añadir testInstrumentationRunner
como aquí hizo el truco:
... android { ... defaultConfig { ... testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } }
(Tengo com.android.tools.build:gradle:1.5.0
)
Cuando creé un nuevo paquete, Studio creó una clase ApplicationTest. Usando us.myname.mypackage como ejemplo, se creó la siguiente estructura de directorios:
app/[myPackage]/src/androidTest/java/us/myname/mypackage/ApplicationTest.class
Inicialmente funcionó fuera de la caja. Dejó de trabajar después de instalar los sabores del producto. Posteriormente hice 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 lanzamiento.)
La configuración anterior sólo funciona con el tipo de compilación de depuración. Si desea usarlo con release o con un tipo de compilación personalizado, puede incluir lo siguiente en build.gradle:
buildTypes { release { ... } debug { ... } } testBuildType "release"
En la pestaña "Construir variantes" en la parte inferior izquierda de Studio, asegúrese de tener Android Instrumentation Tests
y el tipo de buildType
correcto seleccionado.
Para lo que vale la pena, AS 2.3 se colgó cuando creé un corredor de prueba personalizado después de usar el corredor de prueba regular. Tengo el mismo error que aparece en la pregunta.
La eliminación de las configuraciones de depuración para TODAS las pruebas instrumentadas de Android y la reconstrucción lo arreglaron. Creo que el problema mintió en el hecho de que ya no puede elegir un corredor personalizado en las configuraciones de depuración, ya que es más probable que se construye a través de gradle.
Tuve que hacer una combinación de la respuesta de VikingGlen, la respuesta de Liuting, y esta respuesta. Esta respuesta funciona para Android Studio versión 2.1.
-
Ejecutar -> Editar configuraciones … -> General -> Corredor de instrumentación específica (opcional): "android.support.test.runner.AndroidJUnitRunner"
-
En
build.gradle
(el uno con todas sus dependencias), ponga 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 } }
Así que el principal problema fue que cuando creé una carpeta de androidTest en / src /, no estaba siendo recogida por IntelliJ como una carpeta de origen para la prueba (subdirectorio java debe convertirse en verde). Yo estaba usando IntelliJ 13.0.3 y después de actualizar a 13.1.3, todos mis problemas se fueron.
* Nota: no intentes agregar un manifiesto a tu carpeta de androidTest, los documentos de Gradle especifican específicamente que el manifiesto debe ser generado automáticamente al crear la carpeta androidTest. El problema para mí era que el archivo no estaba siendo generado ya que androidTest no estaba siendo reconocido por IntelliJ / Gradle, lanzando así el error de no instrumentación.
Tuve este problema y lo arreglé al ir a Ejecutar -> Editar Configuraciones -> Verde '+' botón en la parte superior izquierda -> JUnit
A partir de ahí, establezca 'usar la mod de classpath …' 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 'class:'. Haga clic en aplicar y bien.
En este punto, si la clase de prueba no tiene otros errores, debería funcionar.
Esto es lo que noté en mi proyecto, en mi módulo de aplicación (main) build.gradle tuve la siguiente configuración buildType
buildTypes { debug { multiDexEnabled true } mock { initWith(buildTypes.debug) } } testBuildType "mock"
Cuando utilicé AndroidJUnitRunner como corredor de pruebas (ambos de Android Studio) y como testInstrumentationRunner en build.gradle, las pruebas funcionaron 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.xy/android.support.test.runner.AndroidJUnitRunner"}
Cuando especificé AndroidJUnitRunner en IDE y el submodule build.gradle. Y esto se fijó especificando MultiDexTestRunner como el corredor de prueba en IDE / build.gradle.
Para resumir, use MultiDexTestRunner para ejecutar pruebas cuando multiDexEnabled true se especifica en build.gradle, de lo contrario use AndroidJUnitRunner como corredor de prueba.
La solución para mi problema es cambiar el nombre del método desde
@Test public void test(){ ... }
a
@Test public void testSomething(){ ... }
Espero que ayude a alguien.
- Cómo implementar la manipulación de cookies en Android usando OkHttp?
- Cómo obtener una cadena de AsyncTask?