Obviamente necesito la declaración de importación correcta para resolver este problema. Según los documentos deAndroidJUnit4
, esto debería ser
import android.support.test.runner.AndroidJUnit4;
Cuando hago eso, Android Studio se resalta runner
en rojo y se queja "No se puede resolver el símbolo 'corredor'".
Antecedentes
Llegué a este punto siguiendo los tutoriales en el sitio de desarrolladores de Android para configurar pruebas usando UI Automator . El primer problema que encontré fue eso com.android.support:support-v4:22.2.0
y com.android.support.test:runner:0.2
dependen de diferentes versiones de com.android.support:support-annotations
. Seguí las sugerencias de este informe de errores de Android y agregué lo siguiente allprojects
en mi proyecto build.gradle
:
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
Esto resolvió el error inmediato, pero sospecho que condujo a mis problemas actuales. ¿Alguien tiene alguna sugerencia sobre cómo solucionar esto?
Secciones relevantes de `./gradlew: aplicación: dependencias
androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.jayway.android.robotium:robotium-solo:5.2.1
+--- com.squareup:fest-android:1.0.8
| \--- org.easytesting:fest-assert-core:2.0M10
| \--- org.easytesting:fest-util:1.2.5
+--- com.android.support.test:runner:0.2
| +--- junit:junit-dep:4.10
| | \--- org.hamcrest:hamcrest-core:1.1
| +--- com.android.support.test:exposed-instrumentation-api-publish:0.2
| \--- com.android.support:support-annotations:22.0.0 -> 22.2.0
+--- com.android.support.test:rules:0.2
| \--- com.android.support.test:runner:0.2 (*)
\--- com.android.support.test.uiautomator:uiautomator-v18:2.1.0
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:22.2.0
| \--- com.android.support:support-v4:22.2.0
| \--- com.android.support:support-annotations:22.2.0
+--- com.android.support:support-v4:22.2.0 (*)
+--- com.google.android.gms:play-services:6.1.71
| \--- com.android.support:support-v4:20.0.0 -> 22.2.0 (*)
+--- com.crashlytics.android:crashlytics:1.+ -> 1.1.13
\--- com.jakewharton:butterknife:5.1.2
fuente
com.android.support.test:runner
completo. ¿Puede confirmar a través degradle dependencies
que todavía está haciendo esto después delresolutionStrategy
cambio?(*)
significa despuéscom.android.support.test:runner:0.2
.Respuestas:
Asegúrese de que su aplicación esté en la variante de compilación de depuración. Vaya a Compilar> Seleccionar variante de compilación ... y se mostrará lo siguiente:
fuente
android { testBuildType "staging"}
debug
no funcionan a menos que se establezca explícitamente en "depuración"Cometí el error de poner las clases de prueba en src / test . Después de moverlos a src / androidTest / java / se resolvió la dependencia.
fuente
Ok, ¡aquí está tu error y el mío!
Si vamos a escribir una porción de código para la Prueba de Unidad Local, no deberíamos usarlo
@RunWith(AndroidJUnit4.class)
porque no usamos AndroidJUnit4 pero necesitamos Junit4. entonces deberíamos escribir@RunWith(JUnit4.class)
. Y, por supuesto, su archivo de prueba de Java está en elapp/src/test/java/your.package.name
directorio.De lo contrario, si (!!) queremos escribir alguna prueba de unidad instrumentada de Android , deberíamos poner nuestros archivos de prueba de Java en el
app/src/androidTest/java/your.package.name
directorio y usar anotaciones como@RunWith(AndroidJUnit4.class)
fuente
Actualizar
La Biblioteca de pruebas de Android ahora es parte de AndroidX. Asegúrese de utilizar las dependencias correctas de Gradle que se encuentran en la documentación oficial .
Respuesta original
Encontré aquí que hay versiones más nuevas de la Biblioteca de soporte de pruebas que las que estaba usando:
Nota: Asegúrese de usar las versiones más recientes de estas bibliotecas. Esta pregunta es de un momento en que la Biblioteca de soporte de prueba de Android era nueva y los números de versión aquí están muy desactualizados.
fuente
Resolví el problema haciendo un pequeño cambio en el archivo build.gradle de la aplicación. En la
dependencies { ... }
sección, asegúrese de incluir la siguiente línea:o cualquier versión que sea la más nueva en ese momento (
...Compile
está en desuso y ha sido reemplazada por...Implementation
). Tenga en cuenta el uso dedebugImplementation
. Android Studio sugirió incluirlo automáticamente conandroidTestImplementation
, lo que no funcionó.Descubrí cómo cambiarlo de prueba a depuración mirando en la Estructura del proyecto en Dependencias del módulo de la aplicación, donde puede cambiar el alcance de cada dependencia, consulte a continuación.
fuente
Tenga en cuenta que este OP ahora está en 2019, tiene 4 años, por lo que si está utilizando Android X
AndroidJUnit4.class
está en desuso, tiene un error allí y uno más con estoandroidx.test.ext.junit.runners.AndroidJUnit4
. Sugiero leer estos enlaces para resolver el problema.AndroidJUnit4.class está en desuso: ¿Cómo usar androidx.test.ext.junit.runners.AndroidJUnit4?
Migración de pruebas de Junit4 a androidx: ¿Qué causa que 'delegate runner no se pueda cargar'? Para mí, Android Studio sugirió reemplazar
que fue obsoleto con
y esto
con este
Después de eso, el error desapareció, pero no sé si la prueba futura mientras se ejecuta ¿ok?
fuente
En mi caso, esto ayudó para la variante de lanzamiento:
fuente
La causa común de este problema es que al agregar la siguiente dependencia:
Esta es una dependencia correcta si va a utilizar pruebas instrumentadas (pruebas en el
androidTest
paquete java)Pero para implementar pruebas de unidades locales (pruebas en el
test
paquete java) mientras se usa la dependencia mencionada anteriormente; entonces te enfrentarásCannot resolve symbol 'AndroidJUnit4'
Esto se debe a que la
androidTestImplementation
directiva se usa para importar bibliotecas en pruebas instrumentadas, pero no en las pruebas unitarias / JVM locales.Si desea utilizarlo
AndroidJUnit4
en una prueba JVM / unidad local, utilice la siguiente dependencia en su lugarLo mismo se aplica si agrega la última dependencia mientras usa
AndroidJUnit4
en la prueba instrumentada, también obtendráCannot resolve symbol 'AndroidJUnit4'
; porque estás usando la directiva incorrecta.fuente
Si alguien todavía tiene este problema:
y utilizando la API 27,
build.gradle
que se encuentra en el módulo de la aplicación, agregue las siguientes líneas:fuente
pon este código en tus dependencias
fuente
Si está utilizando un proyecto con múltiples tipos de compilación, el tipo de compilación seleccionado en la ventana de variante de compilación debe mencionarse con la etiqueta testBuildType en el archivo build.gradle del módulo.
Por ejemplo: si está utilizando la depuración de tipo de compilación , debe agregar
android{testBuildType "debug" }
, si está usando stage , agregue laandroid{testBuildType "stage"}
declaración en la etiqueta de Android.fuente
Mueva la clase de prueba a src / androidTest / java /. Entonces la dependencia se resolverá.
fuente
¡El clásico Invalidate Caches / Restart me ha ayudado! :)
fuente
Agregue esta dependencia en su archivo build.gradle:
Actualice la versión final (
1.1.1
) con la última versión lanzada.fuente
Agregando
resolvió este problema exacto para mí.
fuente
compile
Las directivas nombran las dependencias utilizadas en la aplicación principal, mientrasandroidTestComiple
que las dependencias nombradas se utilizan para las pruebas. Entonces la respuesta correcta es usarandroidTestCompile
, nocompile
.Como lo demuestra la lista de respuestas, esto puede ser causado por algunas cosas. Uno más para la lista:
Ejecuté una LINT excesivamente celosa que eliminó todas las importaciones no utilizadas. Esto producirá los mismos errores, y es fácil pasar por alto que este es el problema.
Android-studio resaltará las referencias que faltan en el código de prueba, y aparecerá la ventana emergente ALT-ENTER (este es el bit que es fácil de perder).
A continuación, necesito eliminar las pruebas de LINT, o al menos desactivar esta advertencia.
Editar: @ Code-Apprentice, las líneas que faltaban eran:
Entonces, el primer error en el archivo fue
@RunWith(AndroidJUnit4.class)
al comienzo de mi clase de prueba.fuente
Versión de historia corta:
Estoy respondiendo a esta pregunta el 15 de febrero de 2020. Desafortunadamente, he agotado todas las soluciones posibles mencionadas aquí y en otros lugares.
https://github.com/codepath/android_guides/wiki/UI-Testing-with-Espresso
https://github.com/udacity/AdvancedAndroid_TeaTime/issues/14
Android Espresso: no se puede resolver el símbolo AndroidJUnit4.class
No se puede resolver el símbolo AndroidJUnit4
Android Espresso: no se puede resolver el símbolo AndroidJUnit4.class
Sí, ninguno de ellos arriba funciona. Utilizo la función incorporada, "Migrar a Andoridx", puede recordarme que tengo que actualizar mis versiones de SDK de destino y mi versión de gradle. Después de actualizar mi versión de Gradle de 2.0.2 a 3.5.3. Simplemente funcionan, incluso la antigua declaración de importación funciona.
fuente
Se me ocurrió el mismo error cuando sigo la aplicación Google IOSched y configuro mi proyecto con tres tipos de compilación [debug, release, staging] donde debug y release comparten el mismo directorio de origen
En este caso, especifique el
testBuildType
archivo build.gradle en el nivel de módulo y el proyecto ahora debería poder resolver el símbolo 'AndroidJUnit4'.Referencia: https://github.com/google/iosched/blob/master/mobile/build.gradle
fuente