Запуск UI-теста Android-приложения в Android studio с использованием библиотеки UIAutomator.
В данном руководстве будет описыны действия по созданию автоматического UI-теста приложения на платформе Android с нуля. В качестве средства использовался UIAutomator. Руководство НЕ ПОЯСНЯЕТ принципы написания автотеста, оно рассказывает принципы конфигурирования системы для возможности его запуска, построения, заливки на устройство, а так же выполнения.
Всю работу можно разбить на несколько разделов.
Оглавление
1. Установка и настройка Android Studio и JDK.
Для загрузки дистрибутива Android Studio (далее «студия») необходимо перейти по адресу https://developer.android.com/sdk/index.html и нажать на кнопку «Download Android Studio».
После принятия лицензии и начала загрузки открывается страница с инструкцией. Основые ее пункты:
Запустить скачанный .exe файл.
Следуйте инструкциям для установки студии и SDK.
Примечание: Если на компьютере не установлен JDK, то программа установки предлагает его скачать.
Но автор рекомендует использовать последнюю версию JDK, с официального сайта Oracle: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
После установки JDK следует добавить новую системную переменную. Для этого необходимо открыть окно «Сведения о системе»(Клик правой кнопкой по Значку «Мой компьютер» => Свойства, или открыть панель управления и запустить соответсвующий пункт меню оттуда (Control Panel\All Control Panel Items\System) ), далее кликнуть по пунку «Advanced system settings», после чего кликнуть по кнопке «Environment variables» и в разделе “System Variables” нажать «New». Добавить системную переменную с названием JAVA_HOME и указанием пути на установленную SDK.
После этого необходимо добавить дополнительное значение в переменную PATH. Найти эту переменную, нажать Edit. В поле value поставить в конце разделитель (; - разделитель), и добавить путь к папке bin в каталоге установленной SDK.
Далее процедура повторяется – вводится еще переменная ANDROID_HOME, а также в Path системных переменных добавляется два каталога – для работы с командами adb и android.
Ввод переменной ANDROID_HOME
Ввод пути для использования команды adb
Путь к папке tools
Внесенные в данном пункте изменения вступят в силу только после перезагрузки системы.
В установочнике студии оставить все пункты по умолчанию. Запомнить путь к SDK – он еще понадобится в дальнейшем.
2. Установка и настройка Apache Ant
Apache Ant можно загрузить перейдя по ссылке http://ant.apache.org/bindownload.cgi . Приложение хранится в архиве. Распакуйте архив по любому удобному для вас пути. Поскольку запуск средства будет производиться через системную консоль, то с ant необходимо произвести операции, идентичные JDK – указать системные переменные.
Ввод переменной ANT_HOME
Путь к папке с исполняемыми файлами
3. Проверка работы команд с помощью системной консоли.
Теперь настало время перезагрузить компьютер и проверить эффект от вышеописанных действий. Для этого запускаем системную командную строку.
Введите команду java –version для проверки работы команды. Если все настроено правильно, то отобразится следующий текст который показывает текущую версию jdk.
Команда android запустит Android SDK Manager.
Команда adb devices покажет список подключенных к машине устройств.
Ant необходим для построения проектов. Поскольку проект не создан, то и построение не удастся, о чем консоль и должна нас уведомить.
4. Создание проекта в Android Studio и написание простого тестового примера.
Настал черед запустить Android Studio. Первый запуск затянется на некоторое время, после чего предложится создать первый проект. Поскольку нас(а точнее меня) интересует только тестирование, то создаем пустой проект.
При создании указываются такие важные параметры как Application Name, Package Name и Project Location из знание пригодится при построении проекта, поэтому рекомендую их записать отдельно.
По созданию пустого проекта необходимо добавить библиотеку uiautomator.jar в папку libs для проекта. Эту библиотеку можно найти в папке с Android SDK по пути \platforms\android-v, где SDK_PATH – путь к папке Android SDK, a android-v – папка с версией библиотеки(к примеру android-17 или android-23). После копирования в папку libs в android studio необходимо добавить jar файли в список библиотек для проекта. Для этого в левой области переключаемся на вид project.
После этого раскрываем проект, открываем папку libs, и добавляем файл как библиотеку в проект.
Студия разделяет проект на две части: Главную и тестовую. Для каждой их них существуют отдельные каталоги.
Переходим в папку androidTest и открываем лежащий внутри java файл. В качестве теста я использовал ранее заготовленный мной пример. Содержимое java-файла добавляю ниже:
package com.dmd_qa.maximp.testapp;
import android.app.Application;
import android.test.ApplicationTestCase;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import android.inputmethodservice.Keyboard;
/**
* Testing Fundamentals
*/ public class ApplicationTest extends UiAutomatorTestCase {
public ApplicationTest() {
}
public void test() throws UiObjectNotFoundException
{
launchBrowser();
}
public void launchBrowser() throws UiObjectNotFoundException
{
//AppSelector UiSelector appButton = new UiSelector().description("Apps");
UiSelector browserButton = new UiSelector().text("Browser");
UiSelector addressPromt = new UiSelector().className("android.widget.RelativeLayout").className("android.widget.EditText");
//Main Screen getUiDevice().pressHome();
UiObject menuButton = new UiObject(appButton);
menuButton.clickAndWaitForNewWindow();
UiObject broButton = new UiObject(browserButton);
broButton.clickAndWaitForNewWindow();
UiObject addressPromtObject = new UiObject(addressPromt);
addressPromtObject.setText("http://play.google.com");
}
}
Тест просто запускает браузер и вводит текст в его адресную строку.
5. Создание и построение uitest-проекта, а так же его отправка на устройство и запуск.
Далее для работы необходимо создать проект. Для пояснения этого сошлюсь на статью https://software.intel.com/ru-ru/articles/automatic-android-testing-with-uiautomator :
Чтобы сгенерировать файлы конфигурации для экспериментальной сборки, выполните следующую команду из командной строки:
/tools/android create uitest-project -n -t -p
где - это имя проекта, который был создан для тестирования UiAutomator (в нашем случае: SendMessage), - выбор устройства и Android API Level (вы можете получить перечень установленных устройств с помощью команды / tools / android list targets), и
это путь к директории, где содержится проект.
Запускаем командную строку, и смотрим перечень установленных устройств с помощью команды android list targets:
Теперь же, когда известны все параметры для команды, можно запустить и команду android create uitest-project
В результате – файл build.xml появился в каталоге.
Переходим в соответсвующий каталог.
И вводим команду ant build.
В результате должно появиться сообщение об успешном построении проекта:
Кроме того в папке должне появиться исполняемый jar файл с именем проекта.
Для теста автор использовал AVD(Android Virtual Device) и у него возникли некоторые проблемы при их спользовании, поскольку аппаратное обеспечение не поддерживало Intel HAXM. Используя SDK manager был использован системный образ ARM.
Предполагается что читатель уже имеет подключенное усторойство. Для проверки списка устройств используется команда adb devices.
Следующий шаг – помещение тестового файла на устройство. Перейдем в папку с исполняемым jar файлом.
Для помещения используется команда adb push , где FileName – имя загружаемого файла, а Path – путь по которому файл грузится.
И наконец – выполение теста выполняется командой adb shell uiautomator runtest -c . packageName можно взять из проекта, className – имя java файла.
В итоге выполняемая команда выглядит так.
Выполнение теста.
|