6

Qualcuno è riuscito a disabilitare le animazioni tramite il codice durante l'esecuzione dei test Espresso? Ho cercato di seguire le istruzioni contenute in questo sito (Collegato da here):
https://code.google.com/p/android-test-kit/wiki/DisablingAnimationsCome disattivare le animazioni nel codice durante l'esecuzione dei test Espresso

Purtroppo non sembra funzionare, come continuo a vedere questo errore permesso:

04-27 15:48:28.694  303-342/system_process W/PackageManager﹕ Not granting permission android.permission.SET_ANIMATION_SCALE to package com.cookbrite.dev (protectionLevel=50 flags=0x18be46) 

Speravo davvero di evitare di riconfigurare il mio dispositivo/emulatori. Eseguiamo spesso test individuali a livello locale e mi infastidirà se devo continuare a modificare le impostazioni.

ho notato alcuni altri sviluppatori lamentano che questo non funziona, quindi potrebbe non essere soli:
https://groups.google.com/forum/#!msg/android-test-kit-discuss/TCil7kMQRTM/QK1qCjzM6KQJ

risposta

10

Finalmente ho avuto questo lavoro. Ecco un Gist che elenca i passaggi necessari:
https://gist.github.com/daj/7b48f1b8a92abf960e7b

Il passo chiave che avevo perso era in esecuzione adb per concedere l'autorizzazione:

adb shell pm grant com.mypackage android.permission.SET_ANIMATION_SCALE  

Aggiunta del permesso per il manifesto e l'esecuzione dei passaggi di riflessione ha fatto non sembra essere abbastanza per conto proprio.

+3

Durante il tentativo di questo comando ottengo questo errore "Operazione non consentita: java.lang.SecurityException: L'autorizzazione android.permission.SET_ANIMATION_SCALE non è un tipo di permesso modificabile". Hai qualche idea per cui non posso concedere l'autorizzazione? –

+1

@ MattKranzler Stai usando un dispositivo reale? Non funzionerà su dispositivi non rooted. – Yenchi

+0

@Yenchi Ho provato con un emulatore e ho ancora l'eccezione – Caipivara

10

sto eseguendo i tre comandi per ogni tipo di animazione e stanno lavorando per me:

adb shell settings put global window_animation_scale 0.0

adb shell settings put global transition_animation_scale 0.0
adb shell settings put global animator_duration_scale 0.0

Maggiori informazioni qui - prepare android emulator for UI test automation.

+0

Questa è l'unica risposta giusta, grazie! – nverbeek

+1

C'è un carattere extra '' alla fine del primo comando 'adb'. Ho provato a rimuoverlo, ma 'edit' richiede un minimo di 6 caratteri. – Sungam

+0

Questo non funziona su un emulatore API 19. – AutonomousApps

-1

Bene, questo è una soluzione in cui sono entrato ... la mia app ha solo un'animazione che interrompe solo alcuni test.

Così ho preferito impostare uno SharedPreference, PREFS_ANIMATIONS_DISABLED_FOR_TESTING ...

ho impostato vero, prima il mio metodo inizia e su false prima estremità.

@Test 
public void startingAnimationTest() { 
    mSettings.edit().putBoolean("PREFS_ANIMATIONS_DISABLED_FOR_TESTING", true).apply(); 

    //Actual testing 

    mSettings.edit().putBoolean("PREFS_ANIMATIONS_DISABLED_FOR_TESTING", false).apply(); 
} 

Chiedo semplicemente prima di avviare l'animazione.

E questo è, sicuramente non la soluzione migliore perché so che i test non dovrebbero influenzare il codice reale, ma è stato abbastanza per me.