Некоторые тестовые модули могут потребовать индивидуальных действий по настройке и демонтажу, которые невозможно выполнить в рамках самого тестового примера. Типичные примеры могут включать в себя:
- установите другие APK (помимо тестового APK)
- перенести несколько файлов на устройство
- запускать команды (например, adbshell pm...)
В прошлом для выполнения таких задач команды компонентов обычно прибегали к написанию тестов на стороне хоста, что требовало понимания возможностей Торговой федерации и обычно увеличивало сложность тестового модуля.
Заимствовав у CTS, мы представили концепцию конфигурации тестового модуля для поддержки таких задач; приведенный выше список общих задач может быть достигнут с помощью всего нескольких строк конфигурации. Для максимальной гибкости вы даже можете реализовать свой собственный целевой подготовительный модуль, определенный ITargetPreparer или ITargetCleaner , и настроить их для использования в вашей собственной конфигурации тестового модуля.
Конфигурация тестового модуля — это обязательный XML-файл, добавляемый в исходную папку модуля верхнего уровня с именем «AndroidTest.xml». XML соответствует формату файла конфигурации, используемому средствами автоматизации тестирования Trade Federation. В настоящее время основными тегами, обрабатываемыми через конфигурации тестового модуля, являются теги «target_preparer» и «test».
Составители целевых показателей
Тег «target_preparer», как следует из названия, определяет целевой подготовительный модуль (см. ITargetPreparer ), который предлагает метод установки, который вызывается перед выполнением тестового модуля для тестирования; и если класс, указанный в теге «target_preparer», также реализует ITargetCleaner , его метод удаления будет вызван после завершения тестового модуля.
Чтобы использовать встроенную конфигурацию общего модуля, добавьте новый файл «AndroidTest.xml» в папку верхнего уровня вашего тестового модуля и заполните его следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
В качестве примера мы можем добавить следующие теги опций (в комментарии «insert» выше):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
Эти параметры позволяют настроить тестовую систему следующим образом:
- перед вызовом тестового модуля выполните команду оболочки «settings put secure accessibility_enabled 1» на устройстве
- после завершения тестового модуля выполните команду оболочки «settings put secure accessibility_enabled 0»
В этом конкретном примере доступность включается/отключается до/после выполнения тестового модуля соответственно. Продемонстрировав простой пример, необходимо более подробно рассказать о том, как используется тег «option». Как показано выше, тег может иметь два атрибута: имя и значение. Атрибут имени должен ссылаться на один из вариантов, предлагаемых составителем.
Точное назначение поля значения зависит от того, как составитель определил параметр: это может быть строка, число, логическое значение или даже путь к файлу. Вот краткое описание трех распространенных средств подготовки целей:
имя класса: Пушфилепрепарер
- короткое имя : push-файл
- функция : помещает произвольные файлы из папки тестового примера в место назначения на устройстве.
- примечания :
- этот подготовительный модуль может перемещать данные из папки в папку или из файла в файл; то есть вы не можете поместить файл в папку на устройстве: вы также должны указать имя файла назначения в этой папке.
- параметры :
- push-файл: push-спецификация, определяющая локальный файл и путь, по которому он должен быть отправлен на устройство. Возможно повторение. Если несколько файлов настроены для отправки по одному и тому же удаленному пути, будет отправлен последний из них.
- push: (устарело) Спецификация push в формате '
/path/to/srcfile.txt->/path/to/destfile.txt
' или '/path/to/srcfile.txt->/path/to/destdir/
'. Возможно повторение. Этот путь может быть относительным к каталогу тестового модуля или к самому выходному каталогу. - post-push: команда, запускаемая на устройстве (с `
adb shell <your command>
`) после всех попыток отправки. Типичным вариантом использования будет использование chmod для разрешений.
имя класса: InstallApkSetup
- короткое имя: install-apk
- функция: помещает произвольные файлы APK в место назначения на устройстве
- параметры:
- имя_тестового_файла: имя APK, который будет установлен на устройство.
- install-arg: дополнительные аргументы, передаваемые команде pm install, включая дефис в начале, например «-d». Может повторяться.
имя класса: Рункмандтаржетпрепарер
- короткое имя: команда запуска
- функция: выполняет произвольные команды оболочки до или после выполнения тестового модуля
- параметры:
- команда запуска: команда оболочки adb для запуска. Может повторяться
- Teardown-command: команда оболочки adb, запускаемая на этапе демонтажа. Может повторяться
Тестовый класс
Тестовый класс — это класс Торговой федерации, используемый для выполнения теста.
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
Вот три распространенных класса тестов:
имя класса: GTest
- короткое имя: gtest
- функция: тест, который запускает собственный тестовый пакет на данном устройстве.
- параметры:
- Native-test-device-path: путь на устройстве, где расположены собственные тесты.
имя класса: InstrumentationTest
- короткое название: Инструментарий
- функция: тест, который запускает пакет инструментального тестирования на данном устройстве.
- параметры:
- package: имя пакета манифеста тестового приложения Android, которое нужно запустить.
- class: имя тестового класса для запуска.
- метод: имя тестового метода для запуска.
имя класса: AndroidJUnitTest
- функция: тест, который запускает пакет инструментального тестирования на данном устройстве с помощью android.support.test.runner.AndroidJUnitRunner. Это основной способ выполнения инструментального теста.