Комплексная конфигурация теста

Для некоторых тестовых модулей может потребоваться индивидуальная настройка и этапы разборки, которые невозможно выполнить в самом тестовом примере. Типичные примеры могут включать:

  • установить другие apk (помимо тестового apk)
  • протолкнуть несколько файлов на устройство
  • запускать команды (например, adb shell pm ...)

В прошлом команды компонентов обычно прибегали к написанию теста на стороне хоста для выполнения таких задач, что требовало понимания возможностей Trade Federation и обычно увеличивало сложность тестового модуля.

Заимствуя у CTS, мы представили концепцию конфигурации тестового модуля для поддержки таких задач, приведенный выше список общих задач может быть достигнут всего несколькими строками конфигурации. Для обеспечения максимальной гибкости, вы даже можете реализовать свои собственные целевые составитель, как определено ITargetPreparer или ITargetCleaner , и настроить их на использование в собственном тесте модуль конфигурации.

Конфигурация тестового модуля для тестового модуля - это обязательный XML-файл, добавленный в исходную папку модуля верхнего уровня с именем «AndroidTest.xml». XML следует формату файла конфигурации, используемого системой автоматизации тестирования Торговой федерации. В настоящее время основными тегами, обрабатываемыми с помощью конфигураций тестового модуля, являются теги 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>

В качестве примера мы можем добавить следующие теги опций (в комментарии «вставить» выше):

    <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>

Эти параметры позволят настроить тестовый жгут на:

  1. перед вызовом тестового модуля выполните команду оболочки «settings put secure accessibility_enabled 1» на устройстве
  2. после завершения тестового модуля выполните команду оболочки «settings put secure accessibility_enabled 0»

В этом конкретном примере доступность включается / отключается до / после выполнения тестового модуля соответственно. На продемонстрированном простом примере необходимо более подробно рассказать о том, как используется тег «option». Как показано выше, у тега может быть два атрибута: имя, значение. Атрибут name указывает имя параметра и далее разбивается на две части, разделенные двоеточием: краткое имя для подготовителя и фактическое имя параметра, предлагаемое подготовителем.

Точное назначение поля значения зависит от того, как подготовитель определил параметр: это может быть строка, число, логическое значение или даже путь к файлу и т. Д. В приведенном выше примере имя «run-command: run-command» означает что мы устанавливаем значение для параметра «run-command», определенного целевым подготовителем с коротким именем «run-command»; и имя «run-command: teardown-command» означает, что мы устанавливаем значение для параметра «teardown-command», также определенного тем же целевым подготовителем с коротким именем «run-command». Вот краткое изложение трех распространенных целевых подготовителей:

  • Имя класса: PushFilePreparer

    • Краткое наименование: нажимной файл
    • Функция: выталкивает произвольные файлы в папке случае теста на место назначения на устройстве
    • примечания:
      • этот подготовитель может перемещать из папки в папку или из файла в файл; то есть вы не можете протолкнуть файл в папку на устройстве: вы также должны указать имя файла назначения в этой папке
    • варианты:
      • толчок: Толчок-спецификация, в формате « /path/to/srcfile.txt->/path/to/destfile.txt » или « /path/to/srcfile.txt->/path/to/destdir/ ». Может повторяться. Этот путь может указываться относительно каталога тестового модуля или самого каталога вывода.
      • ** после нажатие: ** Команда А работать на устройстве (с ` adb shell <your command> ') после того, как все толчки были попытки. Типичный вариант использования - использование chmod для разрешений.
  • Имя класса: InstallApkSetup

    • Краткое наименование: установка-APK
    • Функция: толкает произвольные APK файлы в в пункт назначения на устройстве
    • параметры:
      • -имя-файла тест: название APK должен быть установлен на устройстве.
      • установить-Arg: Дополнительные аргументы должны быть передано в пм команды установки, в том числе ведущего тира, например «-d» Может быть повторено.
  • Имя класса: RunCommandTargetPreparer

    • Краткое наименование: вводная команда
    • Функция: Выполнение произвольных команд оболочки до или после выполнения теста модуля
    • параметры:
      • выполнения команды: ADB командной оболочки для запуска. Может повторяться
      • Команда-демонтаж: 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
    • Функция: Тест , который работает родной тестовый пакет на данном устройстве.
    • параметры:
      • Уроженец тест-устройство Путь: Путь на устройстве , где родные тесты расположены.
  • Имя класса: InstrumentationTest

    • Краткое наименование: приборостроение
    • Функция: Тест , который запускает тестовый пакет измерительных приборов на данном устройстве
    • параметры:
      • Пакет: манифест имя пакета приложения Android тест для запуска.
      • Класс: Название тестового класса для запуска.
      • Метод: Имя методы испытаний для запуска.
  • Имя класса: AndroidJUnitTest

    • Функция: Тест , который запускает тестовый пакет измерительных приборов на данном устройстве с помощью android.support.test.runner.AndroidJUnitRunner Это основной способ выполнить тест приборов.