android android-support-library junit4 android-espresso

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''