My OptionsMenuhas two MenuItems, which of them ( Sort) have their own subMenuwith two elements.
Here is my test code Robolectricfor visibility OptionsMenu:
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityTest {
private static MainActivity mActivity;
@Before
public void setMainActivity() {
if (mActivity == null) {
mActivity = Robolectric.buildActivity(MainActivity.class).create().visible().get();
}
}
@Test
public void checkMainActivityOptionsMenuValues() throws Exception {
Toolbar toolbar = ButterKnife.findById(mActivity, R.id.toolbar);
ShadowActivity shadowActivity = shadowOf(mActivity);
shadowActivity.onCreateOptionsMenu(toolbar.getMenu());
assertTrue(shadowActivity.getOptionsMenu().hasVisibleItems());
assertEquals(shadowActivity.getOptionsMenu().findItem(R.id.action_settings).isVisible(), true);
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getTitle(),
mActivity.getString(R.string.action_sort));
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getSubMenu().getItem(0).getTitle(),
mActivity.getString(R.string.menu_sort_a_z));
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getSubMenu().getItem(1).getTitle(),
mActivity.getString(R.string.menu_sort_size));
}
}
If you are not using Butterknifea string instead:
Toolbar toolbar = ButterKnife.findById(mActivity, R.id.toolbar);
using
Toolbar toolbar = mActivity.findViewById(R.id.toolbar);
I am using Robolectric 3.1.
Hope this helps
source
share