我需要通过单元测试来介绍Menu功能,但是我正在努力获取Menu对象。

以下测试用例失败(mMenu为null):

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 ,然后单击
  • 完成已开始的 Activity (对于此之后的测试非常重要)。

  • 我希望这有帮助。

    08-29 01:21