Я начал использовать эспрессо и написал несколько простых UI-тестов для нажатия на кнопки, ввода текста и проверки, все ли там, где должно быть. Теперь я хотел сделать снимок экрана и проверить некоторые значения пикселей, но не могу найти способ сделать это. У кого-нибудь есть предложения? Возможно ли это даже с эспрессо?
Можно ли сделать снимок экрана и проверить значения пикселей с помощью эспрессо?
Ответы (4)
Поскольку тесты эспрессо — это простые тесты InstrumentationTestCases, вы можете использовать папарацци и знаменитостей, чтобы делать снимки экрана вашего приложения. .
Spoon также как очень удобная система скриншотов. Острее, чем папарацци, но они могут делать скриншоты только действий, а не диалогов, например.
И последнее, но не менее важное: начиная с Android SDK 16, вы можете использовать утилита для скриншотов, позволяющая делать очень быстрые и четкие скриншоты приложения. Я думаю, что это решение действительно лучшее, но оно работает только с SDK 16+.
Наконец, чтобы проверить скриншоты на эталонном скриншоте, нет реальных инструментов. Вы можете найти отличные идеи реализации в stack overflow, но до сих пор ни у кого не было справочного инструмента, который можно было бы использовать на Android.
Facebook создал инструмент для сравнения скриншотов, если это то, что вам нужно: http://facebook.github.io/screenshot-tests-for-android/
Итерировать код пользовательского интерфейса сложно. Как быстро убедиться, что изменения вашего макета или представления работают правильно во всех конфигурациях? screenshot-tests-for-android может решить эти проблемы, предоставив тестовую среду, которая проверяет визуальные различия между изменениями.
Я развил версию, чтобы добавить Espresso run with Spoon в набор инструментов отличного качества для Android, проверьте это вне
Просто запустите, и вы увидите:
mvn clean install -P espresso-spoon
В качестве альтернативы сравнению скриншотов вы можете рассмотреть возможность сравнения самого состояния макета (т. е. позиций представлений) с помощью таких библиотек, как LayoutVerifier.
Хотя это не даст вам визуального представления макета в виде снимка экрана, по сути, оно выполняет ту же функцию, сравнивая состояния представлений. Кроме того, он работает на Robolectric, что избавляет от необходимости запускать его на реальном устройстве.