unitarios unit tutorial test support studio book androidtestimplementation android menu automated-tests android-espresso

tutorial - test unitarios android studio



Cómo hacer clic en el índice en el menú de opciones con Espresso Android (2)

Llamo al menú de opciones usando este código:
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());

Después de eso, apareció el menú. Ahora hago clic en el elemento del menú por su texto, y eso está bien.

El problema que ya he notado es el tema, que puede cambiar, digamos si el usuario usa muchos idiomas para diferentes clientes. Entonces, en la larga prueba, no es útil.

Por esa razón, quiero usar Espresso para hacer clic en el index específico para el caso de prueba específico.

El menú de configuración no parece tener una ID. Así que no sé cómo hacer clic en el ''índice'' específico del elemento en ese menú; digamos que quiero hacer clic en el cuarto elemento.

¿Podrías ayudarme a resolverlo?


Acabo de seleccionar el elemento del menú según su ID.

onView(withId(R.id.some_option_menu_id)).perform(click());


Entonces, trataría de explicarlo paso a paso:

1) Has abierto el menú con este método:

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());

Creo que puedes abrir el mismo menú al poner este código:

onView(withContentDescription("More options")).perform(click());

2) Desea hacer clic en el elemento por Id:

Primero, ¿por qué no quieres usar ''strings.xml''? El texto extraído de este archivo se cambia automáticamente con el idioma del teléfono inteligente, pero solo si se preparó antes del archivo de traducción exacto.

Que el código se vería así:

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext()); onView(withText(R.string.help)).perform(click());

o

onView(withContentDescription("More options")).perform(click()); onView(withText(R.string.help)).perform(click());

Por supuesto, todavía captas una vista por su id, como dijo @Rodrigo. Que el código sería así:

onView(withContentDescription("More options")).perform(click()); onView(withId(R.id.help_item)).perform(click());

Recuerda que en tus archivos xml puedes declarar android:id , android:text o android:contentDescription para cada ''vista''.