При выполнении тестов на стороне устройства (приборы, тесты UI Automator и т. д.) сборщики на стороне хоста могут оказаться неидеальными, поскольку сложно синхронизировать сбор метрик с тестом, работающим на устройстве. Например, скриншот, сделанный асинхронно, скорее всего, пропустит нужный экран и будет бесполезен.
Чтобы удовлетворить эти варианты использования, существует версия наших сборщиков на стороне устройства, которую можно использовать в любом инструменте «AndroidJUnitRunner». BaseMetricListener может быть реализован для автоматического создания отчетов о метриках, собранных способом, полностью совместимым с конвейером отчетов Tradefed.
Эта библиотека отделена от самой Tradefed и может использоваться без Tradefed.
Если вы используете средство запуска AndroidJUnitTest от Tradefed, вы можете просто указать следующую опцию командной строки, чтобы ваш сборщик запускался с вашими тестами:
--device-listeners android.device.collectors.ScreenshotListener
ПРЕДОСТЕРЕЖЕНИЕ. Чтобы классы сборщиков разрешались во время выполнения, ваш инструментальный APK, скорее всего, должен будет включить их статически, добавив в make-файл следующее:
LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
Выполнение
При реализации поверх базового класса BaseMetricListener
вы можете выбрать, когда вы хотите собирать свои метрики в течение жизненного цикла инструментария:
- Когда начинается тестовый прогон:
onTestRunStart
- Когда начинается тестовый пример:
onTestStart
- Когда тестовый пример заканчивается:
onTestEnd
- Когда тестовый пример не пройден:
onTestFail
- Когда тестовый прогон заканчивается:
onTestRunEnd
Взаимодействие
Сбор метрик на стороне устройства выполняется синхронно с самим выполнением инструментирования, а метрики передаются обратно в результаты инструментирования и анализируются Tradefed для отчета в рамках вызова.