Как отключить анимацию в коде при выполнении тестов 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();
}
Я просто прошу его перед запуском анимации.
и это все, конечно, не лучшее решение, потому что я знаю, что тесты не должны влиять на реальный код, но это было для меня достаточно.