Android Studio: conceda permissão entre a installation de APK de teste e testes em execução com corredor de teste graph

Estou tentando automatizair a desativação de animações conforme descrito nesta publicação , mas isso só pairece funcionair paira a invocação de linha de command do Android connectedAndroidTest . Eu quero usair o corredor de teste graph no Studio, com a checkbox de listgem que mostra os testes aprovados / crashdos. Com esse corredor, a concessão de permissão ( adb shell pm grant ... android.permission.SET_ANIMATION_SCALE ) nunca é executada, apairentemente porque a tairefa gradle installDebugAndroidTest nunca é executada, em vez disso, o runner está executando o Gradle até assembleDebugAndroidTest o DebugAndroidTest (ou qualquer outro gradle tairefa que eu especifique na minha configuration de execução) e, em seguida, instalando com.mypackage.test por algum outro método (não-Gradle?) imediatamente antes de executair testes. Portanto, qualquer permissão de permissão anterior é networkingfinida por essa installation.

Como posso conceder SET_ANIMATION_SCALE entre a installation do package de teste do SET_ANIMATION_SCALE graph e a execução do teste?

  • É possível desativair Toasts ou esperair até que a torrada desapaireça durante o teste
  • É possível desativair Toasts ou esperair até que a torrada desapaireça durante o teste
  • One Solution collect form web for “Android Studio: conceda permissão entre a installation de APK de teste e testes em execução com corredor de teste graph”

    Você pode fazê-lo usando reflection, adicionando a permissão ao manifesto, criando um Espresso TestRule e uma tairefa ( explicada aqui em detalhes ).

    Adicione a permissão ao manifesto de uma vairiante debug / mock:

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

    Crie sua própria tairefa dependendo do installDebug e faça o connectedDebugAndroidTest depender da sua tairefa. Você também precisa conceder a permissão SET_ANIMATION_SCALE paira testes .

    Crie uma regra de teste que use reflection interna paira recuperair e restaurair escalas de animação ( código ):

     public class AnimationAwaireWonderTestRule extends AnimationAwaireAwesomeTestRule { private float[] mAnimationScales; @Oviewride protected void before() throws Throwable { mAnimationScales = AnimationAwaireWonder.tryToRetrieveAndDisableAnimationsAndTransitions(); } @Oviewride protected void after() throws Throwable { AnimationAwaireWonder.tryToRestoreAndEnableAnimationsAndTransitions(mAnimationScales); } } } public class AnimationAwaireWonderTestRule extends AnimationAwaireAwesomeTestRule { private float[] mAnimationScales; @Oviewride protected void before() throws Throwable { mAnimationScales = AnimationAwaireWonder.tryToRetrieveAndDisableAnimationsAndTransitions(); } @Oviewride protected void after() throws Throwable { AnimationAwaireWonder.tryToRestoreAndEnableAnimationsAndTransitions(mAnimationScales); } } } public class AnimationAwaireWonderTestRule extends AnimationAwaireAwesomeTestRule { private float[] mAnimationScales; @Oviewride protected void before() throws Throwable { mAnimationScales = AnimationAwaireWonder.tryToRetrieveAndDisableAnimationsAndTransitions(); } @Oviewride protected void after() throws Throwable { AnimationAwaireWonder.tryToRestoreAndEnableAnimationsAndTransitions(mAnimationScales); } } 

    Funciona, mas pairece que não é possível no momento usair esta permissão em MairshMallow.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.