2015-09-26 44 views
7

我正在尝试automate the disabling of animations as described in this post,但似乎只适用于命令行调用connectedAndroidTest。我想在Studio中使用图形测试运行器,列表框显示通过/失败的测试。使用该跑步者,权限授予(adb shell pm grant ... android.permission.SET_ANIMATION_SCALE)永远不会运行,这似乎是因为从不运行gradle任务installDebugAndroidTest,而是跑步者运行gradle至assembleDebugAndroidTest(或我在运行配置中指定的任何替代gradle任务),然后在运行测试之前立即通过其他一些(非Gradle?)方法安装com.mypackage.test。因此,任何以前的许可授权都会由该安装重置。Android Studio:安装测试APK和运行图形测试运行器测试之间的权限

我该如何授予SET_ANIMATION_SCALE图形测试运行者安装测试包和测试运行之间的关系?

+0

您是否找到解决方案?我有完全相同的问题,真的很烦人。开始研究Android Studio中的artifactory构建步骤,但是Android Studio中没有提供这个步骤,因此它处于普通的IntelliJ中。谢谢。 –

+0

我真的很想知道这个解决方案。看起来像工具团队的一个非常讨厌的疏忽,使得这是一个预先运行但安装后的要求,而不是提供IDE的hookin。 –

+1

我打开了一个功能请求:https://code.google.com/p/android/issues/detail?id=198813 –

回答

1

您可以使用反射,向清单添加权限,创建Espresso TestRule和任务(explained here in detail)。

添加权限进行调试/模拟变体的表现

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

创建自己的任务取决于installDebugconnectedDebugAndroidTest取决于你的任务。您还需要授权SET_ANIMATION_SCALE permission for testing

创建测试规则使用内部反射检索和恢复动画尺度(code):

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,但似乎这是不可能在目前使用的棉花糖此权限。

相关问题