6

Hat jemand es geschafft, Animationen durch Code zu deaktivieren, wenn Espresso-Tests ausgeführt werden? Ich habe versucht, die Anweisungen auf dieser Webseite zu folgen (in Verbindung mit von here):
https://code.google.com/p/android-test-kit/wiki/DisablingAnimationsDeaktivieren von Animationen im Code beim Ausführen von Espressotests

Leider ist es nicht zu sein scheint funktioniert, wie ich diese Berechtigungen Fehler halten zu sehen:

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) 

Ich hatte wirklich gehofft zu vermeiden, mein Gerät/Emulatoren neu zu konfigurieren. Wir führen häufig einzelne Tests lokal aus und es wird mich nerven, wenn ich die Einstellungen weiterschalten muss.

bemerkte ich einige andere Entwickler beschweren, dass dies nicht funktioniert, so dass ich vielleicht nicht allein sein:
https://groups.google.com/forum/#!msg/android-test-kit-discuss/TCil7kMQRTM/QK1qCjzM6KQJ

Antwort

10

ich diese endlich zu arbeiten. Hier ist ein Gist die erforderlichen Schritte Auflistung:
https://gist.github.com/daj/7b48f1b8a92abf960e7b

Der entscheidende Schritt, die ich verpasst hatte adb lief die Erlaubnis zu erteilen:

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

die Erlaubnis zum Manifest Hinzufügen und Ausführen der Reflexionsschritte tat scheinen nicht genug allein zu sein.

+3

Wenn ich diesen Befehl versuche, bekomme ich den Fehler 'Operation nicht erlaubt: java.lang.SecurityException: Permission android.permission.SET_ANIMATION_SCALE ist kein veränderbarer Berechtigungstyp'. Hast du irgendwelche Ideen, warum ich die Erlaubnis nicht geben kann? –

+1

@MattKranzler Verwenden Sie ein echtes Gerät? Es funktioniert nicht auf nicht gerootetem Gerät. – Yenchi

+0

@Yenchi Ich versuchte es mit einem Emulator und habe immer noch die Ausnahme – Caipivara

10

ich diese drei Befehle für jede Animation Art der Ausführung und sie für mich arbeiten:

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

Mehr Informationen hier - prepare android emulator for UI test automation.

+0

) Dies ist die einzige richtige Antwort, danke! – nverbeek

+1

Es gibt ein extra Zeichen '' am Ende des ersten 'adb' Befehls. Ich habe versucht, das zu entfernen, aber 'edit' benötigt mindestens 6 Zeichen. – Sungam

+0

Dies funktioniert nicht auf einem API 19-Emulator. – AutonomousApps

-1

Nun, das ist ein Workaround, in den ich kam ... meine App hat nur eine Animation, die nur ein paar Tests stoppt.

So lieber ich einen SharedPreference setzen, bevor Enden PREFS_ANIMATIONS_DISABLED_FOR_TESTING ...

Ich stelle es wahr, bevor meine Methode beginnt und zu falsch.

@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(); 
} 

Ich frage einfach vor Beginn der Animation danach.

Und das ist es, sicherlich nicht die beste Lösung, weil ich weiß, Tests sollten nicht wirklicher Code beeinflussen, aber es hat mir gereicht.