如何测试菜单
2022-09-04 07:31:02
我需要通过单元测试来涵盖菜单功能,但是我正在努力获取菜单对象。
以下测试用例失败(mMenu 为空):
sendKeys(KeyEvent.KEYCODE_MENU);
mMenu = (Menu) mActivity.findViewById(com.###.###.R.id.main_menu);
assertNotNull(mMenu);
请指教。谢谢。
我需要通过单元测试来涵盖菜单功能,但是我正在努力获取菜单对象。
以下测试用例失败(mMenu 为空):
sendKeys(KeyEvent.KEYCODE_MENU);
mMenu = (Menu) mActivity.findViewById(com.###.###.R.id.main_menu);
assertNotNull(mMenu);
请指教。谢谢。
我遇到了同样的场景,并在我的 ActivityInstrumentationTestCase 实现中提出了以下(非常简单)的解决方案:
...
ActivityMonitor am = getInstrumentation().addMonitor(LoginActivity.class.getName(), null, false);
// Click the menu option
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
getInstrumentation().invokeMenuActionSync(mActivity, R.id.logout, 0);
Activity a = getInstrumentation().waitForMonitorWithTimeout(am, 1000);
assertEquals(true, getInstrumentation().checkMonitorHit(am, 1));
a.finish();
...
这段代码片段有三点作用:
我希望这有帮助。
您到底在尝试测试什么?菜单项执行正确的操作?
您可以调用 Activity.openOptionsMenu() 来打开菜单,并通过重写其中一个 onMenu 方法获取对菜单的引用。此时,您可以使用 Menu.performIdentifierAction 来选择菜单项。