Как щелкнуть пункт меню на панели инструментов, используя библиотеку тестов эспрессо

Я хочу проверить опцию «Настройки» на панели инструментов. При нажатии на опцию «Настройки» запустится новая активность, и из названия панели инструментов я хочу подтвердить, успешно ли она запущена или нет. Ниже приведен код: - java code

@RunWith(AndroidJUnit4.class)
@SmallTest
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<>(MainActivity.class);

    @Before
    public void  intialize(){

    }

    @Test
    public void testCanGoToSettings() {
        onView(withId(R.id.toolbar))
                .perform(navigateTo(R.id.action_settings));
        String expectedNoStatisticsText = InstrumentationRegistry.getTargetContext()
                .getString(R.string.action_settings);
        onView(withId(R.id.toolbarSettings)).check(matches(withText(expectedNoStatisticsText)));

    }

}

xml-код

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/home_menu">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />
</menu>

Я получаю ошибку ниже.

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.xyz.android.control:id/toolbar

Пожалуйста, помогите, как я могу реализовать это.


person Karanbeer Kaur    schedule 23.03.2016    source источник


Ответы (1)


Я считаю, что этот ответ соответствует этому вопросу: 1].

В вашем случае вы должны написать что-то вроде этого:

// Click menu
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());

// Choose item "Settings"
onView(withText(mActivity.getString(R.string.action_settings))).perform(click());

// Check that settings activity was opened
onView(withText(mActivity.getString(R.string.some_settings_item))).check(matches(isDisplayed()));
person Dmitriy    schedule 17.08.2016