Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Сложная тестовая конфигурация

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

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

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

Заимствуя из 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>
 

Опции будут настраивать тестовый жгут так, чтобы:

  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, отформатированная как « /path/to/srcfile.txt->/path/to/destfile.txt » или « /path/to/srcfile.txt->/path/to/destdir/ ». Может быть повторен. Этот путь может быть относительно каталога тестового модуля или самого каталога out.
      • ** post-push: ** Команда для запуска на устройстве (с ` adb shell <your command> `) после того, как все попытки были предприняты. Типичный вариант использования будет использовать chmod для разрешений
  • Имя класса: InstallApkSetup

    • короткое имя: install-apk
    • функция: помещает произвольные apk-файлы в папку назначения на устройстве
    • параметры:
      • test-file-name: имя apk для установки на устройство.
      • install-arg: дополнительные аргументы, которые должны быть переданы команде pm install, включая начальную черту, например, «-d». Может повторяться
  • имя класса: RunCommandTargetPreparer

    • короткое имя: run-command
    • функция: выполняет произвольные команды оболочки до или после выполнения тестового модуля
    • параметры:
      • run-command: команда оболочки adb для запуска. Может быть повторен
      • teardown-command: команда оболочки adb, запускаемая на этапе разрыва Может быть повторен

Тестовый класс

Тестовый класс - это класс Trade Federation, который используется для выполнения теста.

 <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

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