我想断言菜单项的可见性。
但是,我的菜单项总是返回 true。
我正在使用以下代码来扩充我的菜单。
SherlockMenuInflater inflater = new SherlockMenuInflater(activity);
MenuBuilder menu = new MenuBuilder(activity);
fragment.onCreateOptionsMenu(menu, inflater);
System.out.println(menu.findItem(R.id.submit).isVisible() + " " + menu.findItem(R.id.next).isVisible() + " "
+ menu.findItem(R.id.done).isVisible());
assertEquals(3, menu.size());
assertFalse(menu.findItem(R.id.submit).isVisible());
assertTrue(menu.findItem(R.id.next).isVisible());
assertFalse(menu.findItem(R.id.done).isVisible());
难道我做错了什么?
My OptionsMenu
有两个MenuItem
s,其中(Sort
) 有它自己的subMenu
有两个项目。
这是我的Robolectric
测试代码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 {
//get MainActivity.toolbar instance
Toolbar toolbar = ButterKnife.findById(mActivity, R.id.toolbar);
//get ShadowActivity instance
ShadowActivity shadowActivity = shadowOf(mActivity);
//call onCreateOptionsMenu using toolbar.menu
shadowActivity.onCreateOptionsMenu(toolbar.getMenu());
//assert that OptionsMenu has visible items
assertTrue(shadowActivity.getOptionsMenu().hasVisibleItems());
//assert that `Settings` MenuItem is visible
assertEquals(shadowActivity.getOptionsMenu().findItem(R.id.action_settings).isVisible(), true);
//assert that `Sort` MenuItem is visible
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getTitle(),
mActivity.getString(R.string.action_sort));
//assert that `Sort` has subMenu with `By Value id` value
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getSubMenu().getItem(0).getTitle(),
mActivity.getString(R.string.menu_sort_a_z));
//assert that `Sort` has subMenu with `By Joke Length` value
assertEquals(shadowActivity.getOptionsMenu().getItem(0).getSubMenu().getItem(1).getTitle(),
mActivity.getString(R.string.menu_sort_size));
}
}
如果你不使用Butterknife
,而不是行:
Toolbar toolbar = ButterKnife.findById(mActivity, R.id.toolbar);
use
Toolbar toolbar = mActivity.findViewById(R.id.toolbar);
我正在使用 Robolectric 3.1。
希望它会有所帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)