我尝试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
?
答案 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中使用此权限。