Android
Espresso
testing

EspressoテストでMenuアイテムの表示、非表示を確認したい

More than 3 years have passed since last update.


Menuアイテムの表示を確認する

メニューアイテムはidではViewを探せないため、表示文言で探す。


HogeActivityTest.java

    @Test

    public void testMenuItem() {
        // 表示されていることを確認する場合
        onView(withText(R.string.menu_setting)).check(matches(isDisplayed()));
        // 表示されていないことを確認する場合
        onView(withText(R.string.menu_refresh)).check(doesNotExist());
    }


OverFlowMenu内のメニューアイテムを確認する

OverFlowMenu内のアイテムを確認するには、OverFlowMenuを開く必要がある


HogeActivityTest.java

    @Test

    public void testOverFlowMenuItem() {
        // オーバーフローメニューを開く
        openActionBarOverflowOrOptionsMenu(mActivityRule.getActivity());
        // 表示されていることを確認する場合
        onView(withText(R.string.menu_setting)).check(matches(isDisplayed()));
}


OverFlowMenuが表示されているかどうかを確認する

条件によってMenuの表示非表示を切り替えている時、OverFlowMenuが表示されるかどうか知りたい時があったので調べた。

メニューを開くことができるなら、Viewも判定できるはずと思って、Espresso.javaの中からMacherを持ってきた。


HogeActivityTest.java

    @Test

    public void testOverFlowMenuItem() {
         Matcher<View> overFlowButtonMatcher = anyOf(
        allOf(isDisplayed(), withContentDescription("More options")),
        allOf(isDisplayed(), withClassName(endsWith("OverflowMenuButton"))));
        // 表示されていることを確認する場合
        onView(overFlowButtonMatcher).check(matches(isDisplayed()));
}