如何在运行Espresso测试时禁用代码中的动画

Dan*_*n J 11 android android-animation android-permissions android-espresso android-instrumentation

有没有人设法在运行Espresso测试时通过代码禁用动画?我一直在尝试按照此网页上的说明(从此处链接):https:
//code.google.com/p/android-test-kit/wiki/DisablingAnimations

不幸的是它似乎没有工作,因为我一直看到这个权限错误:

04-27 15:48:28.694      303-342/system_process W/PackageManager? Not granting permission android.permission.SET_ANIMATION_SCALE to package com.cookbrite.dev (protectionLevel=50 flags=0x18be46)
Run Code Online (Sandbox Code Playgroud)

我真的希望避免重新配置我的设备/模拟器.我们经常在本地进行个别测试,如果我必须保持切换设置,它会让我烦恼.

我注意到其他一些开发人员抱怨说这不起作用,所以我可能并不孤单:https://groups.google.com/forum/#! msg/android-test-kit- discuss/
TCil7kMQRTM/QK1qCjzM6KQJ

den*_*nys 16

我正在为每种动画类型执行这三个命令,它们正在为我工​​作:

adb shell settings put global window_animation_scale 0.0
adb shell settings put global transition_animation_scale 0.0
adb shell settings put global animator_duration_scale 0.0
Run Code Online (Sandbox Code Playgroud)

更多信息 - 为UI测试自动化准备android模拟器.


Dan*_*n J 10

我终于开始工作了.这是一个列出所需步骤的要点:https:
//gist.github.com/daj/7b48f1b8a92abf960e7b

我错过的关键步骤是运行adb以授予权限:

adb shell pm grant com.mypackage android.permission.SET_ANIMATION_SCALE    
Run Code Online (Sandbox Code Playgroud)

向清单添加权限并运行反射步骤本身似乎不够.

  • 尝试该命令时,我收到此错误`操作不被允许:java.lang.SecurityException:权限android.permission.SET_ANIMATION_SCALE不是可更改的权限类型`.你有什么想法我不能批准吗? (3认同)
  • @MattKranzler您使用的是真正的设备吗?它不适用于非root设备. (2认同)

rpa*_*abi 6

如果您从命令行运行测试app/build.gradle,更好的方法是更新。

android {
    ...
    ...

    testOptions {
        animationsDisabled = true
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要./gradlew clean在重建之前做一些事情。如果您使用 android studio,假设 apk 中没有任何更改,它可能不会更新您设备上的 apk。请留意这些内容,以确保更改确实在您的设备上生效。

另请阅读此处的文档。

在从命令行运行的仪器测试期间禁用动画。

如果将此属性设置为 true,则从命令行使用 Gradle 运行检测测试会使用 --no-window-animation 标志执行 am Instrument。默认情况下,该属性设置为 false。

此属性不会影响您使用 Android Studio 运行的测试。