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



我正在尝试自动禁用这篇文章中描述的动画,但这似乎只适用于connectedAndroidTest的命令行调用。我想在Studio中使用图形化测试运行器,列表框显示通过/失败的测试。有了这个运行器,权限授予(adb shell pm grant ... android.permission.SET_ANIMATION_SCALE)永远不会运行,似乎是因为gradle任务installDebugAndroidTest永远不会运行,相反,运行器正在运行gradle直到assembleDebugAndroidTest(或我在运行配置中指定的任何替代gradle任务),然后在运行测试之前立即通过其他(非gradle ?)方法安装com.mypackage.test。因此,任何先前授予的权限都将被该安装重置。

我如何在图形测试运行器安装测试包和运行测试之间授予SET_ANIMATION_SCALE ?

您可以使用反射,向清单添加权限,创建一个Espresso TestRule和一个任务(在这里详细解释)。

权限添加到调试/模拟变量的清单中:

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

创建您自己的任务依赖于installDebug,并使connectedDebugAndroidTest依赖于您的任务。您还需要授予 SET_ANIMATION_SCALE权限进行测试。

创建一个测试规则,在内部使用反射来检索和恢复动画比例(代码):

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

它可以工作,但似乎目前不可能在MarshMallow中使用此权限。

最新更新