Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

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

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

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

Целевые подготовители

Тег «target_preparer», как следует из названия, определяет целевую программу подготовки (см. ITargetPreparer ), которая предлагает метод установки, который вызывается перед запуском тестового модуля для тестирования; и если класс, указанный в теге target_preparer, также реализует ITargetCleaner , его метод teardown будет вызван после завершения работы тестового модуля.

Чтобы использовать встроенную конфигурацию общего модуля, добавьте новый файл 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

    • короткое имя : push-файл
    • функция : помещает произвольные файлы из папки тестового примера в место назначения на устройстве
    • примечания :
      • этот подготовитель может перемещать из папки в папку или из файла в файл; то есть вы не можете протолкнуть файл в папку на устройстве: вы также должны указать имя файла назначения в этой папке
    • варианты :
      • push: push-spec в формате ' /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 в место назначения на устройстве
    • параметры:
      • test-file-name: имя apk для установки на устройство.
      • install-arg: Дополнительные аргументы, передаваемые команде pm install, включая дефис в начале, например «-d». Может повторяться
  • имя класса: RunCommandTargetPreparer

    • короткое имя: команда запуска
    • функция: выполняет произвольные команды оболочки до или после выполнения тестового модуля
    • параметры:
      • run-command: команда оболочки 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: имя тестового класса для запуска.
      • method: имя тестового метода для запуска.
  • имя класса: AndroidJUnitTest

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