android testing
¿Por qué no puedo importar AndroidJUnit4 y ActivityTestRule en mi clase de prueba unitaria? (6)
Añadir dependencia.
androidTestCompile ''com.android.support.test:rules:0.5''
androidTestCompile ''com.android.support.test:runner:0.5''
Tengo problemas para importar algunas de las clases del marco de prueba de la interfaz de usuario de Android. ¡No puedo entender qué está mal!
Esta es mi clase
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleUnitTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);
@Test
public void listGoesOverTheFold() {
onView(withText("Hello world!")).check(matches(isDisplayed()));
}
}
Pero por alguna razón recibo errores ''no se puede encontrar el símbolo ActivityTestRule'' y ''no se puede encontrar el símbolo AndroidJUnit4''. Intenté importarlos pero no se encuentran.
Las dependencias en build.gradle se establecen en:
compile fileTree(dir: ''libs'', include: [''*.jar''])
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:23.4.0''
androidTestCompile ''com.android.support:support-annotations:23.4.0''
androidTestCompile ''com.android.support.test:runner:0.4''
androidTestCompile ''com.android.support.test:rules:0.4''
androidTestCompile ''com.android.support.test.espresso:espresso-core:2.2.1''
androidTestCompile ''com.android.support.test.uiautomator:uiautomator-v18:2.1.2''
Así que creo que tengo todas las dependencias configuradas: he intentado muchas cosas pero sin suerte.
¿Alguien tiene alguna idea?
Agregando:
androidTestImplementation ''com.android.support.test:rules:1.0.2''
resuelve el problema, pero no olvides sincronizar el proyecto con los archivos gradle. Solo entonces los cambios surtirán efecto.
Agregue estos en la versión más nueva:
androidTestImplementation ''com.android.support.test:rules:1.0.2''
androidTestImplementation ''com.android.support.test:runner:1.0.2''
Hay dos tipos diferentes de pruebas que puede configurar en Android
Pruebas unitarias
- Estos se ejecutan directamente en la JVM y no tienen acceso a las clases de framework de Android.
-
Se mantienen en el paquete
test/java
-
Las dependencias deben agregarse en el archivo build.gradle con el comando
testCompile
- Generalmente usa Mockito, Robolectric y JUnit para estas pruebas
Pruebas de instrumentación
- Estos se ejecutan en un emulador de Android y tienen acceso completo a todas las clases de Android
-
Se guardan en el paquete
androidTest/java
-
Las dependencias deben agregarse a build.gradle con
androidTestCompile
- Generalmente usa Espresso y JUnit para estas pruebas
Por lo que puedo decir, está tratando de escribir pruebas de instrumentación con Espresso pero tiene su prueba en el paquete
test/java
, que es para pruebas unitarias.
En ese caso, debe mover su clase de prueba al paquete
androidTest/java
.
Si migró a AndroidX, use esto:
testCompile ''com.android.support.test:rules:0.5''
testCompile ''com.android.support.test:runner:0.5''
necesita esto agregar dependencias
androidTestImplementation ''androidx.test:rules:1.1.1''
androidTestImplementation ''androidx.test:runner:1.1.1''