Podczas przeprowadzania testów na urządzeniu (np. testów instrumentacji lub testów UI Automator) kolektory po stronie hosta mogą nie być idealne, ponieważ trudno jest zsynchronizować zbieranie danych z testem uruchomionym na urządzeniu. Na przykład zrzut ekranu zrobiony asynchronicznie prawdopodobnie nie będzie zawierać pożądanego ekranu i będzie bezużyteczny.
Aby sprostać tym przypadkom użycia, istnieje wersja naszych kolektorów działająca na urządzeniu, której można używać w dowolnym AndroidJUnitRunner
.
BaseMetricListener
można wdrożyć, aby automatycznie raportować dane, które są zbierane
w sposób w pełni zgodny z potokiem raportowania Tradefed.
Ta biblioteka jest oddzielona od Tradefed i może być używana bez Tradefed.
Jeśli używasz narzędzia AndroidJUnitTest
Tradefed, możesz użyć tego wiersza poleceń, aby uruchomić kolektor razem z testami:
--device-listeners android.device.collectors.ScreenshotListener
LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
Implementacja
Podczas implementacji na podstawie klasy bazowej BaseMetricListener
możesz wybrać, kiedy chcesz zbierać dane w trakcie cyklu życia instrumentacji:
- Gdy rozpoczyna się test:
onTestRunStart
- Gdy rozpoczyna się przypadek testowy:
onTestStart
- Po zakończeniu przypadku testowego:
onTestEnd
- Gdy przypadek testowy zakończy się niepowodzeniem:
onTestFail
- Po zakończeniu testu:
onTestRunEnd
Interakcja
Zbieranie danych po stronie urządzenia odbywa się synchronicznie z wykonaniem instrumentacji, a dane są przekazywane z powrotem do wyników instrumentacji i parsowane przez Tradefed, aby można je było zgłosić w ramach wywołania.