我正在尝试 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/