Работа с устройствами в TF

Trade Federation использует абстракцию под названием ITestDevice для запуска тестов. Эта абстракция объективирует Android-устройство с наименьшим общим знаменателем:

  • У него есть серийный номер
  • Он имеет состояние: «В сети», «Доступно», «Восстановление» или «Недоступно».
  • У него есть некоторое понятие надежности. Например, если мы запускаем команду, мы можем различать случай, когда команда еще не завершена, случай, когда устройство не поддерживает выполнение команд, и случай, когда устройство перестало отвечать во время выполнения команды.

Классы устройств

Три основные реализации ITestDevice представляют собой три общих варианта использования.

Физическое устройство

Это реальное аппаратное обеспечение, подключенное к хост-компьютеру TF либо через USB, либо с помощью функции adb TCP. Класс TestDevice находится поверх библиотеки ddmlib, которая представляет собой интерфейс Java для adb. Таким образом, любое физическое устройство, указанное в adb devices может быть создано и использовано в качестве TestDevice .

Эмулятор

Эмуляторы обрабатываются TF специально, потому что они живут в другом процессе. Чтобы взаимодействовать с эмулятором, укажите аргумент --emulator для команды. Дополнительные сведения см. в разделах LocalSdkBuildProvider и SdkAvdPreparer .

Нет устройства

Предположим, у вас есть тест, который вообще не взаимодействует с устройством. Например, он может просто загрузить файл из какого-либо сервиса и проверить, что сам файл действителен. NullDevice — это ITestDevice , который является просто заглушкой. У него есть серийный номер, такой как null-device-N , и большинство предпринятых операций либо молчат, либо выбрасывают.