textos texto programas programa para office mejor gratis falsificar escribir editores editar documentos crear app aplicaciones aplicacion android android-espresso

programas - Espresso de Android-¿Cómo revisar la sugerencia de edición de texto?



programa para editar documentos gratis (4)

Desde Espresso 2.0 solo usa ViewMatcher interno con Sugerencia :

onView(withId(R.id.locationInput)).check(matches(withHint("your_hint")))

Estoy empezando a jugar con Espresso, tengo mis pruebas básicas en ejecución. ¿Ahora estoy tratando de averiguar cómo comprobar que mi texto de edición tiene un texto de sugerencia específico? Gracias.

onView(withId(R.id.locationInput)).check(matches...?)


Hay una forma ligeramente diferente de hacerlo. En mi caso, verifica que la cadena no sea nula, antes de pasarla al emparejador (como se explica en los ejemplos de Espresso). Y también en el código a continuación, no necesita el R.id del EditText con esta sugerencia. Solo verifica si se muestra la sugerencia con "hintText":

import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; public final class Matchers { public static Matcher<View> withItemHint(String hintText) { // use preconditions to fail fast when a test is creating an invalid matcher. checkArgument(!(hintText.equals(null))); return withItemHint(is(hintText)); } public static Matcher<View> withItemHint(final Matcher<String> matcherText) { // use preconditions to fail fast when a test is creating an invalid matcher. checkNotNull(matcherText); return new BoundedMatcher<View, EditText>(EditText.class) { @Override public void describeTo(Description description) { description.appendText("with item hint: " + matcherText); } @Override protected boolean matchesSafely(EditText editTextField) { return matcherText.matches(editTextField.getHint().toString()); } }; } }

Uso:

import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isDisplayed; import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions.matches; import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView; import static com.your.package.withMatcher.withItemHint; . . . onView(withItemHint(someHintString)).check(matches(isDisplayed()));


He creado un Matcher que admite pasar un ID de recurso en lugar de una Cadena

public static Matcher<View> withHint(final int resourceId) { return new BoundedMatcher<View, TextView>(TextView.class) { private String resourceName = null; private String expectedHint = null; @Override public boolean matchesSafely(TextView editText) { if (null == expectedHint) { try { expectedHint = editText.getResources().getString(resourceId); resourceName = editText.getResources().getResourceEntryName(resourceId); } catch (Resources.NotFoundException ignored) { /* view could be from a context unaware of the resource id. */ } } if (null != expectedHint) { return expectedHint.equals(editText.getHint()); } else { return false; } } @Override public void describeTo(Description description) { description.appendText("with string from resource id: "); description.appendValue(resourceId); if (null != resourceName) { description.appendText("["); description.appendText(resourceName); description.appendText("]"); } if (null != expectedHint) { description.appendText(" value: "); description.appendText(expectedHint); } } }; }

Es una réplica de Espresso withText matcher señalado por Valera Zakharov ( code.google.com/p/android-test-kit/source/browse/espresso/lib/… )


Parece que lo descubrí. Básicamente, necesitas crear tu propio emparejador:

public static Matcher<View> withHint(final String expectedHint) { return new TypeSafeMatcher<View>() { @Override public boolean matchesSafely(View view) { if (!(view instanceof EditText)) { return false; } String hint = ((EditText) view).getHint().toString(); return expectedHint.equals(hint); } @Override public void describeTo(Description description) { } }; }

Entonces puedes usarlo:

onView(withId(R.id.locationInput)).check(matches(withHint("Location (Optional)")));