У меня есть меню в ActionBar, который я создаю через:Эспрессо нажмите пункт меню
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, 98,Menu.NONE,R.string.filter).setIcon(R.drawable.ic_filter_list_white_48dp).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, 99,Menu.NONE,R.string.add).setIcon(R.drawable.ic_add_white_48dp).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
и menu_main.xml выглядит следующим образом:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"
android:icon="@drawable/ic_settings_white_48dp"/>
</menu>
При тестировании в Эспрессо я хотел нажать на значок «добавить» (menuId 99). Я попробовал
@Test
public void testAdd() {
openActionBarOverflowOrOptionsMenu(InstrumentationRegistry.getTargetContext());
onView(withText(R.string.add)).perform(click());
}
но это не с исключением NoMatchingViewException. (Элемент настроек, который определен в xml напрямую, я могу щелкнуть с тем же кодом.)
Это для targetSdkVersion 23 и AppCompatActivity. Соответствующие линии для панели инструментов являются:
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
и tool_bar.xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:background="@color/ColorPrimary"
android:elevation="4dp"
tools:ignore="UnusedAttribute">
</android.support.v7.widget.Toolbar>
Что 'targetSdkVersion', ActionBar и устройство/эмулятор вы используете ?. См. Реализацию openActionBarOverflowOrOptionsMenu() (класс Espresso), зависит от этих факторов. Мне нужно исследовать его, но там что-то не так, в зависимости от используемого эмулятора. – albodelu
targetSdkVersion 23 и AppCompatActivity. Я добавил код панели инструментов выше. – user1583209
Может возникнуть проблема при сопоставлении текста с «withText (R.string.add)», поскольку фактический текст не отображается, но только значок (R.drawable.ic_add_white_48dp) виден? – user1583209