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í:

 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: ...]> 

Introduzca aquí la descripción de la imagen

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!

  • Necesita ayuda para escribir una prueba de unidad usando Mockito y JUnit4
  • Unidad de prueba Java clase que carga la biblioteca nativa
  • Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
  • Espresso + Junit4 - iniciar sesión una vez antes de ejecutar todas las pruebas
  • Error: Error de ejecución para la tarea ': app: transformClassesWithMultidexlistForDebugAndroidTest'
  • Android Junit4 prueba en el hilo de la interfaz de usuario
  • ¿Hay una manera de ejecutar la prueba de Espresso con múltiples métodos de prueba pero sólo un método de configuración?
  • AndroidJUnit4.class + org.junit.Assume.assumeTrue = AssumptionViolatedException
  • Junit testing con gradle para un proyecto android
  • Prueba de clases sin actividad en Android
  • Android: Unidad de prueba de un servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.