Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


TouchUtils con el emulador de Android

¿Alguien ha podido realizar con éxito las pruebas de unidad en el emulador de Android utilizando métodos ofrecidos por la clase TouchUtils ?
Puedo obtener la prueba (s) para pasar a mi dispositivo, pero cuando ejecuto la misma prueba (s) (y suite de prueba) en un emulador, cualquier prueba utilizando un método TouchUtils siempre arroja la siguiente excepción:

 java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission at android.os.Parcel.readException(Parcel.java:1327) at android.os.Parcel.readException(Parcel.java:1281) at android.view.IWindowManager$Stub$Proxy.injectPointerEvent(IWindowManager.java:1196) at android.app.Instrumentation.sendPointerSync(Instrumentation.java:902) at android.test.TouchUtils.drag(TouchUtils.java:786) at android.test.TouchUtils.dragViewTo(TouchUtils.java:633) ... 

He desbloqueado el bloqueo de teclado e incluso corrió otros casos de prueba (no TouchUtils) que han pasado.
No tengo el @UiThreadTest aplicado ni estoy corriendo todo lo que requiere código para ejecutar en el subproceso de interfaz de usuario.
Cuando comentar la línea que emplea TouchUtils.dragViewTo(...) y poner en un TouchUtils.dragViewTo(...) simple assert(true) , la prueba se ejecuta y pasa.

¿Algunas ideas?

  • Pruebas de unidad en Android Studio 0.8
  • Prueba de unidad de ciclo de vida de actividad
  • Cómo probar la unidad android y burlarse de un método estático
  • Cómo ejecutar todas las pruebas (unitarias e instrumentadas) con un solo clic en Android Studio
  • Android Studio Gradle androidTest vs instrumentTest
  • Prueba de la unidad de Android con AsyncTask y la solución de actualizaciones de interfaz de usuario
  • Excepción que ejecuta pruebas de JUnit con AndroidStudio: java.lang.NoClassDefFoundError: android / os / Parcelable
  • Java.lang.UnsatisfiedLinkError: dbopen
  • 2 Solutions collect form web for “TouchUtils con el emulador de Android”

    Sucede si el teléfono está bloqueado o hay alguna otra actividad en HomeScreen.

    El emulador es tan lento que cuando emula una interacción de interfaz de usuario después de descartar el teclado virtual, no hay tiempo suficiente para que el teclado virtual se despida y, por lo tanto, está inyectando eventos en el teclado virtual y no en la aplicación.

    Simplemente duerma en el hilo durante unos 500-1000ms antes de intentar realizar cualquier interacción de interfaz de usuario después de ocultar el teclado virtual.

     try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.