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