我在这里找到了以下测试(略作修改)作为答案。但是我收到一条错误消息,提示我需要android.permission.INJECT_EVENT。我已经将其添加到应用程序项目和测试项目中,但是测试仍然表明需要它。

我是否误解了应该如何编写测试?

public void testMenuItemAddDrink(){
        Start activity = getActivity();
        ActivityMonitor am = getInstrumentation().addMonitor(Start.class.getName(), null, false);

        getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
        getInstrumentation().invokeMenuActionSync(activity, se.javalia.myDrinks.R.id.menu_addDrink, 0);

        Activity addDrink = getInstrumentation().waitForMonitorWithTimeout(am, 1000);
        assertEquals(true, getInstrumentation().checkMonitorHit(am, 1));
        addDrink.finish();
    }


提前致谢
罗兰

最佳答案

您可以删除以下行:

getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);


不必要,因为您使用的是invokeMenuActionSync()

08-07 05:28