2014-11-24 15 views
6

Il tentativo di eseguire un test con il codice di UI legati utilizzando caffè espresso (cioè GoogleInstrumentationTestRunner) su un Nexus 7 con il Lollipop dà il seguente errore:Esiste un modo per utilizzare l'espresso con Lollipop (Android 21)?

java.lang.IllegalStateException: This message cannot be recycled because it is still in use. at android.os.Message.recycle(Message.java:279) at com.google.android.apps.common.testing.ui.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:468) at com.google.android.apps.common.testing.ui.espresso.base.UiControllerImpl.loopMainThreadUntilIdle(UiControllerImpl.java:337) at com.google.android.apps.common.testing.ui.espresso.ViewInteraction$1.run(ViewInteraction.java:94) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

Questo è stato apparentemente un known issue for several months ma dal momento che ci sono stati no commits since January 8 , non è noto se ci sarà una correzione ufficiale.

C'è un commento nella discussione che indica

Just removing message.recycle(); seems to fix it...

Si tratta di una soluzione valida? In caso contrario, quale sarebbe la correzione corretta?

risposta

5

UPDATE: Usa Espresso 2.0 per il supporto Lollipop https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions

Sì, se si rimuove "message.recycle();" e ricostruire che possa risolvere il problema.

Il team di Espresso ha annunciato a GTAC che la prossima versione di Espresso sarà in AOSP tra non molto. Guarda il video qui: https://www.youtube.com/watch?v=aHcmsK9jfGU

(io ero il manifesto originale di tale questione si fa riferimento)

UPDATE:

// you will want to keep it for older API versions 
if (SDK_INT < 21){ 
    message.recycle(); 
} 

+0

Grazie! Sono contento che sei riuscito a rivisitare la risposta dal tuo post originale il 1 ° luglio. – Jedidja

+0

Grazie per aver pubblicato anche il link a quel video. – Jedidja

+0

Ehi, sono bloccato e la tua risposta sembra risolvere il mio problema. Da quale classe ho bisogno di rimuovere il metodo recycle()? – Patrick

Problemi correlati