草庐IT

安卓工作室 : grant permission between installing test APK and running tests with graphical test runner

coder 2023-11-27 原文

我正在尝试 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 任务),然后安装 com.mypackage.test 其他(非-Gradle?) 在运行测试之前的方法。因此,该安装会重置任何先前授予的权限。

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

最佳答案

您可以使用反射、将权限添加到 list 、创建 Espresso TestRule 和任务 (explained here in detail) 来实现。

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

<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 中使用此权限。

关于安卓工作室 : grant permission between installing test APK and running tests with graphical test runner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798722/

有关安卓工作室 : grant permission between installing test APK and running tests with graphical test runner的更多相关文章

随机推荐