Как работать с устройствами в TF

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

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

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

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

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

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

Эмулятор

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

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

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