安卓Espresso测试NavigationView

13

我正在为最近制作的应用程序编写一些espresso测试。我在DrawerLayout中使用NavigationView作为滑动菜单。

我成功地这样打开了抽屉:

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

这个可以工作,所以现在我正在尝试在NavigationView中执行对menuitem的点击。


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

找不到视图。我尝试了几种方法,但找不到检索menuitem视图的方法。这是代码中分配项目的方式:

    <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" />

和 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>

我看到有关 NavigationViewMenuItem 是私有成员且无法访问的内容。 有人能帮我解决吗?

问候! Shenno


似乎菜单项的ID与构建菜单的视图不同。也许可以使用不同的匹配器通过文本而不是ID来查找视图? - Doug Stevenson
1
为了帮助其他遇到问题的人与抽屉交互并使用".perform(open)",您必须添加以下依赖项: androidTestCompile 'com.android.support.test.espresso:espresso-contrib:3.0.1' - Kunami
2个回答

6

实际上,在Android中,表示菜单项的视图不知道菜单项的ID。因此,Espresso中的withId()方法在处理菜单项时不起作用。我建议您使用withText方法:

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

5

如果您想坚持使用ID,则可以使用:

onView(withId(R.id.nav_view)).perform(NavigationViewActions.navigateTo(R.id. nav_register));

NavigationViewActions没有包含在Expresso中。 https://github.com/googlesamples/android-architecture/blob/todo-mvp/todoapp/app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/custom/action/NavigationViewActions.java - melkir
请添加androidTestCompile "com.android.support.test.espresso:espresso-contrib:2.2.2"。 - priyanka p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接