2015-03-29 5 views
12

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

  1. Creare un nuovo progetto in studio Android utilizzando l'attività a schermo intero modello di codice
  2. 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()); 
    } 
    

    }

  3. 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.

+0

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

+0

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? –

+0

@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

risposta

4

Questo problema è stato risolto nell'ultima versione di Espresso:

Espresso 2.2.2, Runner/Rules 0.5 (2016/02/22, in silenzio stampa) - https://google.github.io/android-testing-support-library/downloads/release-notes/index.html

Nel mio progetto, ho' Ho cambiato la dipendenza in /app/build.grandle da:

androidTestCompile 'com.android.support.test.espresso: espresso-core: 2.1'

a

androidTestCompile 'com.android.support.test.espresso: espresso-core: 2.2.2'

In Android Studio: Grandel Script => file build.gradle

+0

Succede ancora per noi, utilizzando 2.2.2 – dweebo

+0

@dweebo ho avuto problemi con questo problema a maggio in un computer con configurazione Mac OSX. Ho il progetto in Github: https://github.com/tiagomestreteixeira/HKUSTx-COMP107x-Introduction-to-Mobile-Application-Development-using-Android/tree/master/GreetFriend –

+0

Ho dimenticato di dire che è ancora passa i miei 8 test unitari. Fondamentalmente eseguono le operazioni seguenti: 'onView (withId (R.id.editFriendName)). Perform (typeText (" John "), closeSoftKeyboard()); onView (withId (R.id.greetButton)). Perform (clic()); . OnView (withId (R.id.textMessage)) di controllo (partite (withText (String.Format ("% s John!", GreetMessage)))); ' Ci scusiamo per la cattiva formattazione –

Problemi correlati