Как отключить анимацию в коде при выполнении тестов Espresso

кому-нибудь удалось отключить анимацию код при выполнении тестов Эспрессо? Я пытался следовать инструкциям на этой веб-странице (связан с from here):
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)

Я действительно надеялся избежать перенастройки моего эмулятор устройства. Мы часто запускаем отдельные тесты локально, и это будет раздражать меня, если мне придется продолжать переключать настройки.

Я заметил, что некоторые другие разработчики жалуются, что это не работает, поэтому я не могу быть alone:
https://groups.google.com/forum/#!msg/android-test-kit-discuss/TCil7kMQRTM/QK1qCjzM6KQJ

3 ответов


Я выполняю эти три команды для каждого типа анимации, и они работают для меня:

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

более подробная информация здесь - подготовьте эмулятор android для автоматизации тестирования пользовательского интерфейса.


Я, наконец, получил эту работу. Вот суть, перечисляющая необходимые шаги:
https://gist.github.com/daj/7b48f1b8a92abf960e7b

ключевым шагом, который я пропустил, был запуск adb разрешение:

adb shell pm grant com.mypackage android.permission.SET_ANIMATION_SCALE    

добавление разрешения в манифест и выполнение шагов отражения, по-видимому, недостаточно сами по себе.


Ну, это обходной путь, в который я вошел... мое приложение имеет только одну анимацию, которая останавливает только несколько тестов.

поэтому я предпочел установить SharedPreference, PREFS_ANIMATIONS_DISABLED_FOR_TESTING...

Я устанавливаю true перед началом моего метода и false перед концом.

@Test
public void startingAnimationTest() {
     mSettings.edit().putBoolean("PREFS_ANIMATIONS_DISABLED_FOR_TESTING", true).apply();

    //Actual testing

    mSettings.edit().putBoolean("PREFS_ANIMATIONS_DISABLED_FOR_TESTING", false).apply();
}

Я просто прошу его перед запуском анимации.

и это все, конечно, не лучшее решение, потому что я знаю, что тесты не должны влиять на реальный код, но это было для меня достаточно.