2015-09-26 3 views
7

Ich versuche automate the disabling of animations as described in this post, aber das scheint nur für den Aufruf der Befehlszeile von connectedAndroidTest zu funktionieren. Ich möchte den grafischen Test-Runner in Studio verwenden, wobei das Listenfeld bestandene/nicht bestandene Tests enthält. Mit diesem Runner wird die Berechtigungsgewährung (adb shell pm grant ... android.permission.SET_ANIMATION_SCALE) niemals ausgeführt, anscheinend, weil die Task installDebugAndroidTest nie ausgeführt wird, stattdessen läuft der Runner Gradle bis assembleDebugAndroidTest (oder eine andere Task für die alternative Task, die ich in meiner Laufkonfiguration angegeben habe) und dann Installation von com.mypackage.test durch eine andere (nicht-Gradle?) Methode unmittelbar vor dem Ausführen von Tests. Daher wird jede vorherige Erlaubnisvergabe von dieser Installation zurückgesetzt.Android Studio: Erteilen Sie die Erlaubnis zwischen der Installation von Test-APK und laufenden Tests mit grafischen Test-Runner

Wie kann ich SET_ANIMATION_SCALE zwischen der grafischen Test Läufer Installation des Testpakets und der Ablauf der Prüfung gewähren?

+0

Haben Sie eine Lösung gefunden? Ich habe genau das gleiche Problem, wirklich nervig. Sie haben in Android Studio mit dem Schritt zum Erstellen von Artefakten begonnen, das aber in Android Studio nicht vorhanden ist, lässt es im normalen IntelliJ-Modus zu. Vielen Dank. –

+0

Ich würde auch gerne eine Lösung dafür wissen. Scheint wie ein ziemlich nerviges Versehen vom Werkzeug-Team, dies zu einer Vorlauf-aber-nach-Installation-Anforderung zu machen und keine Anbindung an IDE zu bieten. –

+1

Ich habe eine Feature-Anfrage geöffnet: https://code.google.com/p/android/issues/detail?id=198813 –

Antwort

1

Sie können dies mit Reflektion tun, indem Sie dem Manifest die Berechtigung hinzufügen, eine Espresso TestRule erstellen und eine Aufgabe erstellen (explained here in detail).

Fügen Sie die Erlaubnis zum Manifest einer Debug/Mock Variante:

<uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/> 

erstellen Ihre eigene Aufgabe auf installDebug abhängig und connectedDebugAndroidTest auf Ihrer Aufgabe abhängig machen. Sie müssen auch gewähren die SET_ANIMATION_SCALE permission for testing.

erstellen Testregel, die intern Reflexion abrufen und wiederherstellen Animation Skalen (code) verwendet:

public class AnimationAwareWonderTestRule extends AnimationAwareAwesomeTestRule { 

    private float[] mAnimationScales; 

    @Override 
    protected void before() throws Throwable { 
     mAnimationScales = AnimationAwareWonder.tryToRetrieveAndDisableAnimationsAndTransitions(); 
    } 

    @Override 
    protected void after() throws Throwable { 
     AnimationAwareWonder.tryToRestoreAndEnableAnimationsAndTransitions(mAnimationScales); 
    } 
} 

It works scheint aber es ist nicht möglich, zur Zeit in Marshmallow, diese Erlaubnis zu verwenden.