Ho perso due giorni cercando di eseguire un'azione di clic su un'attività a schermo intero.Espresso - Esecuzione di un'azione non riuscita sull'attività a schermo intero - InjectEventSecurityException
Procedura per riprodurre
- Creare un nuovo progetto in studio Android utilizzando l'attività a schermo intero modello di codice
Scrivi un test espresso per l'attività da eseguire cliccare
public class FullscreenActivityTest extends ActivityInstrumentationTestCase2<FullscreenActivity> { public FullscreenActivityTest() { super(FullscreenActivity.class); } @Override protected void setUp() throws Exception { super.setUp(); getActivity(); } public void testClickingOnLayout() { onView(withId(R.id.fullscreen_content)).perform(click()); }
}
- Esegui questo test sull'emulatore (qualsiasi versione di Android dal pane allo zenzero al lecca-lecca).
mancata
android.support.test.espresso.PerformException:
Error performing 'click' on view 'with id: com.example.espressodefect:id/fullscreen_content'
...
Caused by: android.support.test.espresso.PerformException:
Error performing 'Send down montion event' on view 'unknown'.
...
Caused by: android.support.test.espresso.InjectEventSecurityException: java.lang.SecurityException:
Injecting to another application requires INJECT_EVENTS permission
pila completa è here.
provato
Ho provato quanto segue senza fortuna:
- No schermata di blocco sull'emulatore. (Attività anche aggiornato utilizzando
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
- Tutte le animazioni spento tastiera
- No sullo schermo, o qualcosa sovrapposto sulla parte superiore della app.
- anche istruzioni seguita here a developer.android.com
- JUnit3 e JUnit4 stili (AndroidJUnitRunner)
<uses-permission>
per INJECT_EVENTS
TL; DR
Nel test dell'espresso, l'esecuzione di azioni funziona correttamente se utilizzo un'attività non a schermo intero come quella creata con l'attività vuota. La stessa azione su schermo intero fallisce.
Sto usando Espresso 2.0 e librerie di supporto.
Cosa sto facendo di sbagliato qui?
Aggiornamento
L'espresso dev lo ha confermato come difetto. Si prega di vedere issue 140.
Potrebbe essere un errore di caffè espresso? Ho aggiunto un [difetto] (https://code.google.com/p/android-test-kit/issues/detail?id=140) per vedere la risposta dello sviluppatore. – rpattabi
Anche io ci stavo incontrando di tanto in tanto. Penso che quello che ho fatto per "risolvere" è stato aggiungere una chiamata a riposo subito prima di eseguire (click()) '. Hai provato? –
@CarlAnderson Non sembra che l'espresso stia avendo problemi di sincronizzazione qui. Quindi aggiungere un ritardo non ha aiutato qui. Ho provato ritardi di lunghezza diversa. – rpattabi