Мне надоело руками проводить регрессионное тестирование приложений после внесения правок. В свободное время начал разбираться с автоматизацией этого процесса. Т.к. программист из меня - никакой, то очень надеюсь на помощь знающих товарищей. Пишите в комментарии ваши замечания и предложения по оптимизации процесса.
Есть вот такая документация по Espresso
https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html
Короче, если нужно сделать свайп всего экрана справа налево:
onView(withId(R.id.viewPager)).perform(swipeLeft());
Порыскав по просторам интернета я в конечном итоге остановил свой выбор на Espresso, т.к. этот инструмент идёт в комплекте с Android Studio.
Я пока не лезу в дебри автоматизации. Для начала хочу автоматизировать прогон UI. Т.е. мне нужно убедиться, что свайпы выполняются без ошибок и при клике на элемент интерфейса выполняется ожидаемое действие. Очень хорошо что Espresso работает с интерфейсом не по координатам, а по ID. Так что если какой то элемент будет перемещён, то править тесты не придётся. Для нормальной работы вам понадобится полный доступ к коду. У нас все работают через Git так что я тоже подключился и без опаски могу выкачивать актуальные версии кода.
Для создания файла с кодом теста идём Run - Record Espresso Test
Android Studio предложит выбрать устройство с которого будет записан тест. Я предпочитаю пользоваться эмулятором.
Ждем пока приложение скомпилится и установится на выбранное устройство.
Когда всё будет готово для записи - появится вот такое окно:
Некоторые из выполненных действий будут записаны. Остальные придётся вписывать самому.
После нажатия на кнопку "Complete Recording" это окно закроется и в вашем проекте будет создан файл с заготовкой автоматического теста.
Того что было создано автоматически для меня оказалось мало.
https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html
Короче, если нужно сделать свайп всего экрана справа налево:
onView(withId(R.id.viewPager)).perform(swipeLeft());
Слева на право:
onView(withId(R.id.viewPager)).perform(swipeRight());
Снизу вверх:
onView(withId(R.id.viewPager)).perform(swipeUp());
Сверху вниз:
onView(withId(R.id.viewPager)).perform(swipeDown());
Длинный тап на экране:
onView(withId(R.id.viewPager)).perform(longClick());
Клик на элементе списка:
onView(withId(R.id.recycler_view)).perform(RecyclerViewActions.actionOnItemAtPosition(positionNumber, click()));
где positionNumber - номер элемента в списке
Вместо click() можно подставлять необходимый параметр swipeLeft(), longClick() и т.д.
Иногда для отладки теста можно использовать "замедлитель" Thread.sleep(500); 500 - это миллисекунд.
Такие тесты не заменят ручное тестирование, но освободят от рутины.
Немає коментарів:
Дописати коментар