Espresso – compruebe si TextView existe en ListView
Quiero comprobar la visualización de Save € XX en la lista. Guardar € XX es un TextView que puede ser VISIBLE
o INVISIBLE
. Yo uso JUnit 4 y Espresso 2.2.1.
Intenté comprobarlo así:
- Casos de prueba de unidad con JUnit + (Robolectric o Mockito o ambos en Android)
- Jenkins y Running AndroidJUnitRunner Instrumentation Tests
- Prueba de la excepción ClassNotFound
- Prueba JUnit con Robolectric: java.lang.InstantiationException
- ¿Cómo puedo obtener @BeforeClass y @AfterClass equivalente en Junit3?
onView(withText(startsWith("Save"))).check(matches(isDisplayed()));
Pero siempre obtiene un error:
android.support.test.espresso.AmbiguousViewMatcherException: 'with text: a string starting with "Save"' matches multiple views in the hierarchy.
¿Hay una manera de si el TextView existe en el ListView con Espresso?
ACTUALIZAR
También intenté usar onData
:
onData(hasToString(startsWith("Save"))) .inAdapterView(withId(R.id.suggestion_list_view)).atPosition(0) .check(matches(isDisplayed()));
Pero parece que onData
funciona con la capa de datos pero no con la capa de vista. Por lo tanto, recibo el error:
java.lang.RuntimeException: No data found matching: with toString() a string starting with "Save" contained values: <[Data: ...]>
- Anotación @UiThreadTest produce "java.lang.Exception: No se pueden ejecutar métodos"
- ¿Por qué no puedo importar AndroidJUnit4 y ActivityTestRule en mi clase de prueba de unidad?
- Excepción que ejecuta pruebas de JUnit con AndroidStudio: java.lang.NoClassDefFoundError: android / os / Parcelable
- Java.lang.RuntimeException: ¡Stub! Ejecutar Junit en el proyecto de Android
- InitializationError para AndroidJunit4
- Prueba de Android JUnit4
- org.junit cant 'ser resuelto en IntelliJ
- Prueba del código de Android con JUnit y el JDK
Después de varios intentos, encontré el camino.
En este caso, debemos usar un enfoque combinado y trabajar con datos y capas de vista. ListView
al ListView
por ID
y elegimos el primer elemento. A continuación, compruebe el texto "Guardar" .
onData(anything()) .inAdapterView(withId(R.id.list_view)) .atPosition(0) .onChildView(withId(R.id.suggestion_saving)) .check(matches(withText(startsWith("Save"))));
Funciona de maravilla. ¡Disfrutar!