Android Studio:在使用图形测试运行器安装测试APK和运行测试之间授予权限

时间:2015-09-26 15:21:09

标签: android unit-testing android-espresso

我尝试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。因此,任何先前的权限授予都会被该安装重置。

如何在图形测试运行程序的测试包安装和测试运行之间授予SET_ANIMATION_SCALE

1 个答案:

答案 0 :(得分:1)

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

权限添加到调试/模拟变体的

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

根据installDebug创建您自己的任务,并使connectedDebugAndroidTest取决于您的任务。您还需要授予 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但似乎目前无法在MarshMallow中使用此权限。