loading

TGW es profesional en diseño y solución para sistemas de gestión de aparcamientos.

Probar las intenciones de la cámara y la galería con Espresso

Cuando tiene pantallas dentro de su aplicación de Android que tienen funciones de cámara y/o galería con algunos cambios de pantalla (vistas, etiquetas o botones que aparecen/desaparecen, etc.) y necesita escribir algunas pruebas de Espresso para esas funciones/pantallas, hay un par de ayudantes que he estado usando y quiero compartir con todos ustedes. Otorgamiento de permisos Cuando usa la cámara dentro de su aplicación, debe otorgar algunos permisos en el dispositivo para leer/almacenar una foto. Estos permisos se solicitan en tiempo de ejecución y generalmente están relacionados con READ_EXTERNAL_STORAGE y WRITE_EXTERNAL_STORAGE.

Probar las intenciones de la cámara y la galería con Espresso 1

Por lo tanto, GrantPermissionRule permite otorgar permisos de tiempo de ejecución en Android M (API 23) y superior y, cuando se aplica a una clase de prueba, esta regla intenta otorgar todos los permisos de tiempo de ejecución solicitados.@get:Rulevar mRuntimePermissionRule = GrantPermissionRule.grant(android.

Manifest.permission.WRITE_EXTERNAL_STORAGE) Esta regla generalmente se usa para otorgar permisos de tiempo de ejecución para evitar que el cuadro de diálogo de permisos aparezca y bloquee la interfaz de usuario de las aplicaciones y, según la documentación oficial: según esta regla, otorgará automáticamente READ_EXTERNAL_STORAGE cuando se solicite WRITE_EXTERNAL_STORAGE. Prueba de galería El código para prueba cuando se hace clic en un ícono de la galería en la aplicación, luego se selecciona una imagen y se muestra en la pantalla: Lo primero aquí es que tengo un método de ayuda (CameraAndGallery.

savePickedImage) que primero guarda una imagen (para abreviar el ícono ic_launcher) que se usará en la prueba como un archivo local visible para la prueba: El parámetro de actividad proviene de ActivityTestRule:@get:Rulevar mActivityTestRule = IntentsTestRule(MyActivity: :class.java) Luego creo un objeto ActivityResult (como un simulacro pero para Android Intent) que será utilizado por el comparador de Intents de Espresso (para hacer coincidir y validar los intents salientes):val imgGalleryResult = CameraAndGallery.createImageGallerySetResultStub(mActivityTestRule.

actividad) con la intención (hasAction (Intent.ACTION_CHOOSER)).respondWith (imgGalleryResult) El secreto aquí es solicitar el archivo previamente guardado y finalmente utilizado como resultado.

Probar las intenciones de la cámara y la galería con Espresso 2

Nota: Para trabajar con intentos de espresso, debemos agregar esta dependencia a la compilación de aplicaciones. archivo gradle: androidTestImplementation androidx.test.

espresso:espresso-intents:$espressoVersionPara la prueba que estamos escribiendo, supongamos que la imagen seleccionada de la Galería, la estamos configurando en un ImageView que es visible para el usuario, luego la parte final de la prueba es verificar que la se muestra la imagen (método hasImageSet()):onView(withId(R.id.auctionphotos_bigimage_viewer)).

check(matches(hasImageSet()))Camera TestSimilar a Gallery Test, la prueba para obtener una imagen del dispositivo Camera sigue casi los mismos pasos, pero en este caso no es necesario guardar una imagen antes, solo simula el resultado de la cámara: El resultado de la captura simulada de la siguiente manera: La imagen resultante será tomada por la intención: con la intención (hasAction (MediaStore. ACTION_IMAGE_CAPTURE)). respondWith(imgCaptureResult)Y con eso podemos verificar si la imagen fue tomada y mostrada:onView(withId(R.

id.auctionphotos_bigimage_viewer)).check(matches(hasImageSet()))Finalmente, si desea explorar un poco más de contenido relacionado con las pruebas y las intenciones de Espresso, es posible que desee echar un vistazo a este repositorio del equipo oficial de Android

Póngase en contacto con nosotros
Artículos recomendados
Fundas
sin datos
Shenzhen Tiger Wong Technology Co., Ltd es el proveedor líder de soluciones de control de acceso para sistemas de estacionamiento inteligente de vehículos, sistemas de reconocimiento de matrículas, torniquetes de control de acceso de peatones, terminales de reconocimiento facial y Soluciones de estacionamiento LPR .
sin datos
CONTACT US

Shenzhen TigerWong Technology Co.... Ltd

Tel:86 13717037584

Correo electrónico: info@sztigerwong.com

Dirección: 1.er piso, edificio A2, parque industrial digital Silicon Valley Power, no. 22 Dafu Road, calle Guanlan, distrito de Longhua,

Shenzhen, provincia de GuangDong, China  

                    

Copyright©2021 Shenzhen TigerWong Technology Co.... Ltd  | Mapa del sitio
Contact us
skype
whatsapp
messenger
contact customer service
Contact us
skype
whatsapp
messenger
cancelar
Customer service
detect