Verwenden Sie Instrumente, um das Drücken des Menüelements für Sie zu testen.
Hier ist ein Beispiel Testfall von mir, der das Menü "Einstellungen" aufruft, das eine andere Aktivität startet.
public void testCanGoToSettings() {
final MainActivity activity = getActivity();
Instrumentation.ActivityMonitor am = getInstrumentation().addMonitor(ConfigureActivity.class.getName(),
null /* result */, true /* block */);
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
getInstrumentation().invokeMenuActionSync(activity, R.id.menu_settings, 0 /* flags */);
/* if not block in addMonitor() above, then comment out this...
Activity a = getInstrumentation().waitForMonitorWithTimeout(am, 1000);
a.finish();
*/
}
Dies war eine nützliche Antwort und ein Code-Snippet, am wichtigsten ist, dass Sie zuerst 'KeyEvent.KEYCODE_MENU' senden müssen, bevor Sie die Menüaktion aufrufen. Im Nachhinein ist es offensichtlich, denke ich - Sie müssen das Menü anzeigen lassen, bevor Sie eines seiner Elemente aufrufen können. –
FWIW Ich benutze getInstrumentation(). InvokeMenuActionSync() ohne vorherigen Aufruf von sendKeyDownUpSync() und es funktioniert auch gut. Siehe die Antwort auf diese Frage: http://stackoverflow.com/questions/5209154/test-menu-items – karni
Ich beobachtete, dass der Aufruf von SendKeyDownUpSync notwendig ist, wenn Sie unter Bedingungen, die das Ergebnis der Arbeit sind, testen möchten In onPrepareOptionMenu ausgeführt, gibt invokeMenuActionSync true zurück.Ohne den Aufruf wurde onPrepareOptionsMenu nicht aufgerufen. – mtotschnig