Bei der Ausführung geräteseitiger Tests (z. B. Instrumentierungen, UI Automator-Tests) sind hostseitige Collectors möglicherweise nicht ideal, da es schwierig ist, die Messwerterfassung mit einem Test zu synchronisieren, der auf einem Gerät ausgeführt wird. Beispielsweise wird bei einem asynchron aufgenommenen Screenshot wahrscheinlich der gewünschte Bildschirm übersehen und ist daher nutzlos.
Für diese Anwendungsfälle gibt es eine geräteseitige Version unserer Collector, die in jeder AndroidJUnitRunner
-Instrumentierung verwendet werden kann.
BaseMetricListener
kann implementiert werden, um Messwerte automatisch zu erfassen, die auf eine Weise erhoben werden, die vollständig mit der Tradefed-Berichtspipeline kompatibel ist.
Diese Bibliothek ist von Tradefed selbst getrennt und kann ohne Tradefed verwendet werden.
Wenn Sie den AndroidJUnitTest
-Auslöser von Tradefed verwenden, können Sie die folgende Befehlszeilenoption angeben, damit der Collector mit Ihren Tests ausgeführt wird:
--device-listeners android.device.collectors.ScreenshotListener
LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
Implementierung
Wenn Sie die Implementierung auf der Basisklasse BaseMetricListener
aufbauen, können Sie auswählen, wann die Messwerte während des Lebenszyklus der Instrumentierung erfasst werden sollen:
- Zu Beginn eines Testlaufs:
onTestRunStart
- Zu Beginn eines Testfalls:
onTestStart
- Wenn ein Testfall endet:
onTestEnd
- Wenn ein Test fehlschlägt:
onTestFail
- Wenn ein Testlauf endet:
onTestRunEnd
Interaktion
Die Erhebung der Messwerte auf Geräteseite erfolgt synchron mit der Ausführung der Instrumentierung. Die Messwerte werden an die Instrumentierungsergebnisse zurückgegeben und von Tradefed analysiert, um als Teil der Aufrufe erfasst zu werden.