如何在Travis中禁用Android模拟器动画?

时间:2017-04-12 13:01:45

标签: android travis-ci android-espresso

我在Travis CI中运行Espresso测试。当我在我的设备中运行测试时,我通常会禁用所有动画,所以我不必一直使用Thread.sleep。

但我真的不知道如何在Travis CI中执行此操作,因此我的测试在没有Thread.sleep的情况下失败。我查看了互联网...但我没有找到任何关于如何在模拟器中禁用动画的教程

我知道,我可以在Espresso中使用空闲资源。但有些时候我不愿意。

2 个答案:

答案 0 :(得分:5)

如果可以使用adb shell命令:

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

在jenkins ci上测试

答案 1 :(得分:5)

如果您尝试使用@ azizbekian的路径,我就写了here,创建了新的测试规则here并对其进行了测试here

我确认@Testujaca Malpeczka路径适用于Android API 17-22的Travis-ci,如here所述

如果您正在寻找最新Android API和工具的解决方案,正在进行中herehere

before_script:
  # Wait for emulator fully-booted and disable animations
  - android-wait-for-emulator
  - adb shell settings put global window_animation_scale 0 &
  - adb shell settings put global transition_animation_scale 0 &
  - adb shell settings put global animator_duration_scale 0 &
  - adb shell input keyevent 82 &

它也适用于Circle-ci以及任何持续集成构建服务器,请参阅broken link here

test:
  pre:
    - ...
    - circle-android wait-for-boot
    - adb shell input keyevent 82
    - adb shell settings put global window_animation_scale 0
    - adb shell settings put global transition_animation_scale 0
    - adb shell settings put global animator_duration_scale 0

我的扩展测试规则适用于Android API 15-22,并且Android 23模拟器中存在错误。

我会在另一天使用android-topeka样本为24+以后的版本试用它,可能它有效。

使用sdkmanager的任何帮助,改进或有效替代方案都将非常受欢迎。