Geräteseitige Messwerterfassung

Beim Ausführen von geräteseitigen Tests (z. B. Instrumentierungstests, UI Automator-Tests) sind Host-seitige Collectors möglicherweise nicht ideal, da es schwierig ist, die Messwerterfassung mit einem Test zu synchronisieren, der auf einem Gerät ausgeführt wird. Wenn beispielsweise ein Screenshot asynchron aufgenommen wird, ist es wahrscheinlich, dass der gewünschte Bildschirm nicht zu sehen ist und der Screenshot nutzlos ist.

Für diese Anwendungsfälle gibt es eine geräteseitige Version unserer Collectors, die in jeder AndroidJUnitRunner-Instrumentierung verwendet werden kann. BaseMetricListener kann implementiert werden, um Messwerte, die auf eine Weise erfasst werden, die vollständig mit der Tradefed-Berichtspipeline kompatibel ist, automatisch zu melden.

Diese Bibliothek ist von Tradefed entkoppelt und kann ohne Tradefed verwendet werden.

Wenn Sie den AndroidJUnitTest-Runner von Tradefed verwenden, können Sie die folgende Befehlszeilenoption angeben, damit Ihr 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 Grundlage der Basisklasse BaseMetricListener vornehmen, können Sie auswählen, wann die Messwerte während des Lebenszyklus der Instrumentierung erfasst werden sollen:

  • Wenn ein Testlauf beginnt: onTestRunStart
  • Wenn ein Testlauf beginnt: onTestStart
  • Wenn ein Testlauf endet: onTestEnd
  • Wenn ein Testlauf fehlschlägt: onTestFail
  • Wenn ein Testlauf endet: onTestRunEnd

Interaktion

Die Erfassung von Messwerten auf der Geräteseite erfolgt synchron zur Ausführung der Instrumentierung selbst. Die Messwerte werden an die Instrumentierungsergebnisse zurückgegeben und von Tradefed geparst, um als Teil des Aufrufs gemeldet zu werden.