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. Ein asynchron erstellter Screenshot enthält beispielsweise wahrscheinlich nicht den gewünschten Bildschirm 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:
- Wenn ein Testlauf beginnt:
onTestRunStart
- Zu Beginn eines Testfalls:
onTestStart
- Wenn ein Testfall endet:
onTestEnd
- Wenn ein Testlauf fehlschlägt:
onTestFail
- Wenn ein Test abgeschlossen ist:
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 geparst, um als Teil der Aufrufe erfasst zu werden.