Android espresso test NavigationView

Estoy escribiendo algunos espressotests para una aplicación que hice recientemente. Estoy utilizando una NavigationView dentro de un DrawerLayout como menú deslizante.

Me las arreglé para abrir el cajón de esta manera:

onView(withId(R.id.drawer_layout)).perform(open()); 

Esto funciona así que ahora estoy tratando de realizar un clic en un menuitem en el NavigationView.

 onView(withId(R.id.nav_register)).. 

No puede encontrar la vista. He intentado varias cosas, pero no puedo encontrar una manera de recuperar la vista menuitem. Esta es la forma en que los elementos se asignan en el código:

  <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> 

Y activity_main_drawer.xml

 <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_menu_home" android:title="Home" /> <item android:id="@+id/nav_register" android:icon="@drawable/ic_menu_register" android:title="Registreer" /> <item android:id="@+id/nav_login" android:icon="@drawable/ic_menu_login" android:title="Log in" /> <item android:id="@+id/nav_play" android:icon="@drawable/ic_menu_play" android:title="Speel sessie" /> <item android:id="@+id/nav_logout" android:icon="@drawable/ic_menu_logout" android:title="Log uit" /> </group> 

He leído algo sobre NavigationViewMenuItem es un miembro privado y no accesible. ¿Alguien me puede ayudar?

Saludos! Shenno

En realidad, la vista que representa el elemento de menú no conoce el ID del elemento de menú en Android. Como resultado el método withId() no funciona en Espresso con elementos de menú específicamente. Le sugiero que utilice el método withText :

 onView(withText("the item title")). 

Si usted quiere pegarse a la identificación entonces usted puede utilizar:

 onView(withId(R.id.nav_view)).perform(NavigationViewActions.navigateTo(R.id. nav_register)); 
  • Mocking resultados de los servidores en Android (Wiremock, MockWebServer etc)
  • ¿Cómo usar Espresso UI Testing for React Native?
  • Error de prueba Espresso: AppNotIdleException
  • Prueba de ViewPager con múltiples fragmentos usando espresso android
  • Lanzamiento de pruebas Espresso en varios emuladores
  • Prueba de RxJava2 usando Espresso y obtener una excepción de puntero nulo cuando suscribeOn
  • Android Espresso: longClick () no funciona y se comporta como click ()
  • ¿Hay alguna manera de probar las pestañas personalizadas de Chrome con Espresso?
  • Cómo escribir prueba funcional automatizada con Facebook SDK en la aplicación de Android?
  • ¿Cómo hacer clic en un clickablespan utilizando espresso?
  • ¿Por qué Espresso deja la aplicación una vez finalizada la prueba? Cómo detenerlo de hacer eso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.