'Android.support.test.espresso no existe' cuando quiero usarlo para una prueba individual de apk

Necesito realizar algunos trabajos de prueba automática en una aplicación de Android sin su código fuente. He encontrado tanto robotium y espresso puede hacer este trabajo, decidí usar espresso porque su apoyo de Google.

Me gustaría firmar tanto el apk de destino como el test de espresso apk con la misma firma, el apk de destino es el mismo que este ejemplo .

Introduzca aquí la descripción de la imagen

Cuando empiezo a codificar la prueba de espresso apk, hice los siguientes trabajos.

El build.gradle en el módulo: app:

apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "tk.deedog.i01test" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' androidTestCompile 'com.android.support.test:testing-support-lib:0.1' } 

El código fuente de mi I01Test.java:

 package tk.deedog.i01test; import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.matcher.ViewMatchers.withText; public class I01Test extends ActivityInstrumentationTestCase2 { private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "tk.tubabe.instrustmen101.Instruments101"; private static Class<?> launcherActivityClass; Activity i101Acitvity; static { try { launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public I01Test() { super(launcherActivityClass); } @Override protected void setUp() throws Exception { super.setUp(); i101Acitvity = getActivity(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testButtonClick() { onView(withText("Send")).perform(click()); } } 

Cuando intenté ejecutar este programa, el estudio de Android me dijo que Error:(6, 44) error: package android.support.test.espresso does not exist .

Tuve el mismo problema y conseguí que funcionara revisando la estructura de mi proyecto. ¿Tus pruebas están bajo src / androidTest? Tuve que refactorizar el nombre de mi carpeta de prueba a androidTest

No entendí claramente lo que querías decir con

… Aplicación de Android sin su código fuente.

Pero ¿por qué no puedes llamar a la actividad de la clase de prueba sin reflexión? Justo cómo se mostró en Espresso Start Guide .

Tienes actividad y prueba apropiada, echa un vistazo al paquete, clases importadas, clase extendida y constructor en esos ejemplos. Me refiero smth como este:

 package com.google.android.apps.common.testing.ui.espresso.tests; import static com.google.android.apps.common.testing.ui.espresso.Espresso.onData; <...> import com.google.android.apps.common.testing.ui.testapp.R; import com.google.android.apps.common.testing.ui.testapp.SimpleActivity; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.LargeTest; @LargeTest public class BasicTest extends ActivityInstrumentationTestCase2<SimpleActivity> { public BasicTest() { super(SimpleActivity.class); } @Override public void setUp() throws Exception { super.setUp(); getActivity(); } <...> 

Tuve este mismo problema, una cosa que estaba arruinando mi construcción de prueba es la siguiente línea:

 main { java.srcDirs = ['src/main/java', 'src/AndroidTests', 'src/AndroidTest/java'] } 

Eliminar código de prueba de srcDirs:

 sourceSets { .... main { java.srcDirs = ['src/main/java'] } } 

Demasiado tarde, pero puede ayudar a alguien.

Mi escenario era este –

Estaba ejecutando Android Studio 2.2 (Estable). Mi carpeta androidTest estaba dentro de src /. En la vista "Android", mi carpeta java mostraba la carpeta java normal, la carpeta de prueba, la carpeta androidTest y una copia de la carpeta androidTest bajo el nombre "java" (en verde). El culpable fue

 sourceSets { .... main { java.srcDirs = ['src/main/java','src/androidTest'] } ... } 

Cambie esto a lo siguiente:

 sourceSets { .... main { java.srcDirs = ['src/main/java'] } ... } 

Mi nivel de aplicación build.gradle se ve así

 apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "my.package.name" minSdkVersion 16 targetSdkVersion 24 versionCode 1 versionName "1.0-debug" multiDexEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { preDexLibraries = false; } sourceSets { main { java.srcDirs = ['src/main/java'] } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:24.2.0' compile 'com.android.support:design:24.2.0' compile 'com.android.support:support-v13:24.2.0' androidTestCompile 'junit:junit:4.12' androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') { // Necessary if your app targets Marshmallow (since Espresso // hasn't moved to Marshmallow yet) exclude group: 'com.android.support', module: 'support-annotations' } androidTestCompile('com.android.support.test:runner:0.5') { // Necessary if your app targets Marshmallow (since the test runner // hasn't moved to Marshmallow yet) exclude group: 'com.android.support', module: 'support- annotations' } } apply plugin: 'com.google.gms.google-services' 
  • Clases de utilidad comunes para proyectos de prueba de Android
  • Actividad de inicio para pruebas
  • Proporcionando datos de prueba para SharedPreferences para Robolectric
  • Prueba de Google Play Alpha y Beta con diferentes puntos finales o parámetros personalizados
  • Cómo escribir prueba funcional automatizada con Facebook SDK en la aplicación de Android?
  • OnChildView y hasSiblings con Espresso
  • Cómo cambiar / cambiar testInstrumentationRunner dinámicamente con gradle
  • Roboelectric 3.0 fragmentos de prueba
  • Las pruebas de Android no se ejecutan en un dispositivo inferior a 5 (API 21) NoClassDefFoundError
  • ¿Cómo puedo probar setResult () en una prueba de Android Espresso?
  • Java.lang.SecurityException: Permiso Denial: getIntentSender () cuando se utiliza UiAutomation en una prueba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.