-
Notifications
You must be signed in to change notification settings - Fork 0
espressoTips
-
En la versión actual de Espresso NO se puede desactivar programáticamente la wifi ni los datos
-
Comprobar si un intent se abre con la info adecuada
intended(IntentMatchers.hasData(Uri.parse(uri)));
-
Abrir el menú de opciones
openActionBarOverflowOrOptionsMenu(ApplicationProvider.getApplicationContext());
-
Acceder al elemento i-ésimo de un listView
onData(anything()).inAdapterView(withId(R.id.listViewXX)).atPosition(i);
-
Acceder a un elemento gráfico dentro de un elemento de una listView
elementoLista = onData(anything()).inAdapterView(withId(R.id.listViewXX)).atPosition(i); elementoLista.onChildView(withId(R.id.idElementoHijo));
-
Volver a la pantalla anterior
Espresso.pressBack();
-
Seleccionar una opción de un spinner
onView(withId(R.id.spinner)).perform(click());
onData(allOf(is(instanceOf(String.class),is("opción"))).perform(click());
Si el spinner está dentro de un Dialog:
onView(withId(R.id.spinner)).perform(click());
onData(allOf(is(instanceOf(String.class),is("opción"))).inRoot(isPlatformPopup()).perform(click());
-
Activar permisos de la aplicación
@Rule public GrantPermissionRule permissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
Es necesario añadir la siguiente dependencia en el build.gradle:
androidTestImplementation 'androidx.test:rules:1.2.0'
-
Desactivar acceso a internet
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc wifi disable");
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc data disable");
Para volver a activar internet:
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc wifi enable");
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc data enable");
-
Para rotar la pantalla
Añadir la dependencia a UIAutomator:
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
Para rotar:
UiDevice device = UiDevice.getInstance(getInstrumentation());
device.setOrientationLeft();
-
Comprobar que un Toast se ha mostrado correctamente
onView(withText("String del toast")).inRoot(RootMatchers.withDecorView(not(decorView))).check(matches(isDisplayed()));
Para obtener el objeto decorView, añadir lo siguiente al método @Before
activityRule.getScenario().onActivity(activity -> decorView = activity.getWindow().getDecorView());
- Cerrar y volver a abrir la aplicación
pressBackUnconditionally();
activityRule.getScenario().close();
ActivityScenario.launch(MainView.class);
donde activityRule es el objeto de tipo ActivityScenarioRule creada al inicio del test.