Chr*_*yle 7 android unit-testing android-espresso
我正在尝试自动禁用动画,如本文所述,但这似乎只适用于命令行调用connectedAndroidTest
.我想在Studio中使用图形测试运行器,列表框显示通过/失败的测试.对于该adb shell pm grant ... android.permission.SET_ANIMATION_SCALE
运行器,权限grant()永远不会运行,似乎因为gradle任务installDebugAndroidTest
永远不会运行,而是运行器正在运行Gradle assembleDebugAndroidTest
(或者我在运行配置中指定的任何备用gradle任务),然后com.mypackage.test
由某些人安装在运行测试之前的其他(非Gradle?)方法.因此,该安装会重置任何先前的权限授予.
如何SET_ANIMATION_SCALE
在图形测试运行器的测试包安装和测试运行之间进行授权?
您可以使用反射来完成此操作,将权限添加到清单中,创建 Espresso TestRule 和任务(此处详细说明)。
将权限添加到调试/模拟变体的清单中:
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/>
Run Code Online (Sandbox Code Playgroud)
根据您的任务创建您自己的任务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);
}
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但目前似乎不可能在 MarshMallow 中使用此权限。
归档时间: |
|
查看次数: |
1009 次 |
最近记录: |