LoginSignup
3
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-05-12

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()));
}
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4