ListView o Spinner utiliza AdapterView que muestra los datos en tiempo de ejecución del adaptador. Así que, a diferencia de otras vistas, adapterview no muestra todos los elementos de la lista al mismo tiempo, lo que significa que onView no encontraría vistas que no estén cargadas actualmente.
onData() se aplica específicamente para enfocar el elemento de la lista deseado antes de realizar cualquier operación en la posición dada.
123456// clic en la 3ª posición// donde el tipo de fuente de datos es stringonData(allOf(is(instanceOf(String.class)))).atPosition(2).perform(click());// seleccionar vista con texto "item 3 "onData(allOf(is(instanceOf(String.class)),is("item 3")).perform(click());
java
Para realizarlo, haga clic en RecyclerView. Se requiere la dependencia de la contribución del expreso, que proporciona métodos específicos de RecyclerView como se muestra a continuación:
12345// verifica la visibilidad de la vista del reciclador en screenonView(withId(R.id.news_frag_recycler_list)).check(matches(isDisplayed()));// realiza un click en la vista en la 3ª posición en RecyclerViewonView(withId(R.id.news_frag_recycler_list)).perform(RecyclerViewActions.actionOnItemAtPosition(3,click()));
java
Iniciar una actividad con intención de personalizar
Para iniciar una actividad, la instancia ActivityTestRule requiere un objeto de intención y se aplica la versión sobrecargada de ActivityTestRule.
1ActivityTestRule(SingleActivityFactory<T> activityFactory,boolean initialTouchMode,boolean launchActivity)
java
Si la actividad de lanzamiento es falsa, significa que la actividad no será lanzada automáticamente por la prueba. Vea la implementación:
1234567891011121314151617@ReglaPúblicaActividadReglaTestRule<MainActivity putExtra("key", "value");return intent;}};@TestpublicvoidcustomizeIntent(){// nota en lugar de null, un objeto de intención puede ser pasado activityTestRule.launchActivity(null);}
java
Modelo de permiso de funcionamiento de malvaviscos
Para mejorar la seguridad de los datos y los recursos cruciales, Android Marshmallow y superiores informan al usuario sobre los recursos utilizados por la aplicación mientras ésta se está ejecutando. Algunos de los recursos serán el almacenamiento, los contactos, la ubicación y otros recursos de hardware como sensores, cámara, etc.
Por lo tanto, para las pruebas, los permisos de ejecución deben concederse primero y preferiblemente en métodos anotados con la anotación @Antes:
12345678910@Antes de la concesión pública del permiso de teléfono(){// En M+, intentar llamar a un número activará un diálogo en tiempo de ejecución. Asegúrate// de que el permiso está concedido antes de ejecutar esta prueba.if(Build.VERSION.SDK_INT;=Build.VERSION_CODES.M){getInstrumentation().getUiAutomation().executeShellCommand("pm grant "+getTargetContext().getPackageName()+" android.permission.READ_EXTERNAL_STORAGE");}}
java
Uso del contexto para la inicialización
A menudo se requiere una instancia de contexto para configurar las bibliotecas antes de su uso, de modo que la instancia de contexto pueda recuperarse de la instancia de InstrumentaciónRegistro.
12345678910@RulepublicActivityTestRule<NewsActivity > activityTestRule =newActivityTestRule<>(NewsActivity.class);@Beforepublicvoidinit(){Context context =InstrumentationRegistry.getTargetContext();SomeLib.initialize(context);// como fresco, base de fuego etc}
java
Probando la visibilidad de las tostadas
Los brindis son mensajes flotantes, que se muestran a los usuarios sobre la pantalla actual. Para personalizar la apariencia de las tostadas, utilice el código que figura a continuación y preste atención a la declaración de importación.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546packagecom.pavneet_singh;importstaticandroid.support test.espresso.onView;importstaticandroid.support test.espresso.action.ViewActions.click;importstaticandroid. VerAccionesVerAcciones.enVerTeclado.suave;importaticandroide.soporte.de.prueba.espresso.acciónVerAcciones.tipoTexto;importaticandroide.soporte.de.prueba.espresso.emparejador.con.DecorView;importaticandroide.soporte.de.prueba. espresso.matcher.ViewMatchers.isDisplayed;importaticandroid.support test espresso matcher.ViewMatchers withHint;importaticandroid support test espresso matcher.ViewMatchers withId;importaticandroid support test espresso assertion.ViewAssertions. matches;importaticandroid.test.espresso matcher.ViewMatchers.conText;importandroid.test.espresso contribuyendo a RecyclerViewActions;importandroid.support test filters.LargeTest;importandroid support test rule.ActivityTestRule;importandroid. apoyar.el.corredor.de.prueba.AndroidJUnit4;importarRegla.de.prueba.junit;importarRegla.de.prueba.junit;importarCorredor.junit.RunWith;importcom pavneet_singh.espressotestingdemo.R;@RunWith(AndroidJUnit4. class)publicclassMainActivityTest{// Para lanzar la actividad mencionada en testing@RulepublicActivityTestRule<MainActivity class);@TestpublicvoidtestButtonClick(){// enter nameonView(withId(R.id.editTextName)).perform(typeText("Pavneet"),closeSoftKeyboard());// clear textonView(withText("Clear")). perform(click());// comprobar la visibilidad de la pista después de que el texto se borreonView(withId(R.id.editTextName)).check(matches(withHint("Enter Name"));onView(withId(R.id.editTextName)).check(matches(isDisplayed()));onView(withId(R.id.editTextName)). perform(RecyclerViewActions.actionOnItemAtPosition(3,click()));// check toast visibilityonView(withText("Pavneet Toast")).inRoot(withDecorView(not(is(activity.getWindow().getDecorView())).check(matches(isDisplayed()));}}
java
Comprobar la visibilidad de la vista en ScrollView
ScrollView puede albergar múltiples vistas (EditText, Buttons, CheckBox, etc.) vertical u horizontalmente, por lo que es posible que algunas vistas no sean actualmente visibles en la pantalla. Por lo tanto, la aplicación de coincidencias(isDisplayed()) no puede aplicarse en las vistas que no son visibles.
Para probar las vistas que no son visibles en la ventana actual, utilice conEffectiveVisibility:
12// check view existe en la actual jerarquía de diseñoonView(withId(R.id.view_id)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE));
java