'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 .
- Unidad de pruebas de Android y permisos
- ¿Cuál es la diferencia entre las carpetas src / androidtest y src / test?
- Cómo activar la salida de la consola en las pruebas de la unidad Android?
- Prueba de unidad de Android: cómo borrar SharedPreferences
- Prueba de ViewPager (y CursorLoader) con Robolectric
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
.
- Uso de Espresso ¿Cómo puedo comprobar el número de elementos en mi alerta Cuadro de diálogo
- Espresso 2.0 - Método anotado con @Test dentro de la clase extendiendo junit3 testcase
- Cómo utilizar Espresso Idling Resource
- Continúa el informe de cobertura de código jacoco después de un caso de prueba fallido
- Android Espresso: ViewPager no tiene instancia de adaptador
- Android APK vs prueba APK?
- ¿Dónde puedo ver los resultados de las pruebas de JUnit en Android Studio?
- Android Espresso prueba el flujo de aplicaciones
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'