Cómo corregir la excepción de permiso INJECT_EVENT al enviar toques a una prueba de ActivityInstrumentationTestCase2
Aunque hay muchos ejemplos que muestran que algo como esto debería funcionar, el código siguiente falla. Este código vive en un proyecto de prueba que está asociado con el proyecto real.
public class MyTest extends ActivityInstrumentationTestCase2<MyActivity> { public MyTest(String name) { super("com.mypackage.activities", MyActivity.class); setName(name); } public void testTap() throws Throwable { //Required by MotionEvent.obtain according to JavaDocs long downTime = SystemClock.uptimeMillis(); long eventTime = SystemClock.uptimeMillis(); Instrumentation i = getInstrumentation(); //Setup the info needed for our down and up events to create a tap MotionEvent downEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 300, 20, 0); MotionEvent upEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, 300, 20, 0); //Send the down/up tap event i.sendPointerSync(downEvent); i.sendPointerSync(upEvent); //Delay to see the results Thread.currentThread().sleep(3000); } }
Esto lanza una java.lang.SecurityException: Inyectar a otra aplicación requiere el permiso INJECT_EVENTS en las llamadas i.sendPointerSync (). También he intentado view.onTouchEvent (event) y view.dispatchTouchEvent (event) sin éxito.
- Mockito - ¿Qué hace el método de verificación?
- Cómo leer un archivo solo de prueba en la prueba de unidad de Android
- No se puede burlar la clase final de Kotlin usando Mockito 2
- Pruebas Robolectric que se ejecutan en Android Studio pero no en la línea de comandos
- ¿Cómo los métodos de prueba de unidad publicados por Event Bus en android?
Lo único que puedo pensar es si los ejemplos donde esto está trabajando viven en el proyecto que está siendo probado. Esto parece malo porque la recomendación es separar las pruebas a un proyecto diferente y poder ejecutarlas desde un servidor de compilación con algo así como:
adb -e shell am instrument -w com.mypackage.activities.test/android.test.InstrumentationTestRunner
- ¿Por qué obtengo un error de acceso ilegal al ejecutar las pruebas de Android?
- Mono para Android: qué marcos de pruebas funcionan
- ¿Cómo probar una unidad que usa HttpClient en Android usando el marco incorporado?
- Error de cifrado en Android 4.2
- Pruebas unitarias Llamadas JNI
- Prueba de unidad de ciclo de vida de actividad
- ¿Cuál es la mejor y más fácil herramienta para probar aplicaciones de Android?
- No se puede resolver la actividad para: Intención
Esto probablemente significa que su proyecto principal, el proyecto de prueba o las versiones de su emulador están fuera de sincronización.
Podría ayudar a otros.
El problema que tenemos es
Error al realizar el gesto. Java.lang.SecurityException: Inyectar a otra aplicación requiere el permiso INJECT_EVENTS (RuntimeError ")
En mi caso, el problema era con el
La red no está conectada
. Una vez resuelto el problema de la conexión de red, se están ejecutando las pruebas.