Das Werkzeug androidtestrunner

Einführung

Das Tool androidtestrunner führt Qt-Tests auf Android-Geräten und -Emulatoren aus. Es automatisiert die für die Ausführung von Tests erforderlichen Schritte, einschließlich der Verwaltung der APK-Installation, der Testausführung und der Abfrage der Ergebnisse.

Bevor Sie androidtestrunner verwenden, stellen Sie sicher, dass Sie Ihr Qt-Testprojekt mit CMake oder qmake konfiguriert haben.

Wie es funktioniert

  1. Zunächst wird der APK-Build-Befehl ausgeführt, um die erforderliche APK für den Test zu generieren.
  2. Anschließend wird die Test-App auf dem Zielgerät installiert und gestartet, um den Testprozess in Gang zu setzen.
  3. Die Testergebnisse werden in das Datenverzeichnis der App auf dem Gerät geschrieben, um sicherzustellen, dass umfassende Testausgaben erfasst werden.
  4. Nach Abschluss der Tests schreibt der Läufer neben den Ergebnisdateien auch eine Exit-Code-Datei.
  5. In diesem Stadium ruft androidtestrunner diese Ergebnisdateien vom Gerät ab und untersucht den Exit-Code auf Fehler.
  6. Werden Probleme festgestellt, druckt er sofort die Logcat-Protokolle der Anwendung aus, einschließlich möglicher Absturz-Stacktraces, die so aufbereitet sind, dass Dateinamen und Zeilennummern für jeden Frame ersichtlich sind. Außerdem werden ANR-Protokolle (Application Not Responding) erfasst und gemeldet, wenn solche Ereignisse während der Testausführung auftreten.

Um die Integration zu verbessern, überträgt der Test Runner QT- oder QTEST-Umgebungsvariablen von der Host-Umgebung des Test Runner-Prozesses auf die Anwendung und sorgt so für Konsistenz und einen nahtlosen Testablauf.

Ausführen von Tests mit dem Test Wrapper

Im folgenden Beispiel wird der Test tst_android auf einer bestimmten Emulatorinstanz ausgeführt, wobei eine Umgebungsvariable übergeben und nur der Testfall testAssets ausgeführt wird:

ANDROID_SERIAL=emulator-5554 QT_DEBUG_PLUGINS=1 ./tst_android testAssets

Abrufen von Ergebnissen

Standardmäßig und wenn die stdout-Testausgabe nicht explizit deaktiviert ist, werden die Testergebnisse während der Ausführung des Tests auf dem Host ausgegeben. Nach der Ausführung der Tests werden alle explizit angeforderten Testdateien mit ihren jeweiligen Formaten in den angegebenen Ausgabepfad gezogen.

Ausführliche Informationen zum Qt Test Framework finden Sie unter Qt Test Übersicht.

Wie man es benutzt

Die grundlegende Syntax zur Ausführung von androidtestrunner lautet wie folgt:

androidtestrunner [ARGUMENTS] -- [TESTARGS]

Um den Test auf einem bestimmten Gerät/Emulator auszuführen, verwenden Sie die adb Umgebungsvariable ANDROID_SERIAL oder ANDROID_DEVICE_SERIAL.

Obligatorische Argumente

Der Test-Runner erwartet immer die Übergabe der folgenden Argumente:

  • --path <build-path>: Der Pfad, in dem das Android Gradle-Paket gebaut wird, üblicherweise unter android-build-testname.
  • --make <build-command>: Der Befehl, mit dem die Test-APK erstellt wurde, zum Beispiel cmake --build <build-dir> --target <target>_make_apk.

    Hinweis: Übergeben Sie dieses Argument in Anführungszeichen, damit es nicht als mehrere Argumente des Testläufers behandelt wird, sondern als der Wert des Arguments --make.

  • --apk <apk-path>: Der Pfad zur Test-APK, die durch den Build-Befehl generiert und auf dem Gerät installiert wird.

Optionale Argumente

Sie können auch die folgenden optionalen Argumente übergeben:

  • --adb <adb-path>: Gibt einen benutzerdefinierten ADB-Befehlspfad an. Der Standardwert ist der adb Pfad, der auf dem System unter $PATH zu finden ist.
  • --activity <activity-name>: Gibt eine benutzerdefinierte Aktivität an, die ausgeführt werden soll. Standardmäßig wird die erste im AndroidManifest.xml definierte Aktivität verwendet.
  • --timeout <seconds>: Legt das Zeitlimit für die Ausführung des Tests fest. Der Standardwert ist 600 Sekunden (10 Minuten).
  • --skip-install-root: Vermeidet das Anhängen von INSTALL_ROOT an den make-Befehl und ist hauptsächlich bei der Verwendung von qmake nützlich.
  • --show-logcat: Druckt die logcat-Ausgabe auf stdout, unabhängig vom Fehlschlagen des Tests. Logs werden im Falle eines Fehlers gedruckt und können Crash-Stacktraces oder ANR-Ereignisse enthalten.
  • --ndk-stack <command-path>: Gibt den Pfad zum ndk-stack-Tool für die Symbolisierung von Absturz-Stacktraces an. Standardmäßig wird der Werkzeugpfad unter $ANDROID_NDK_ROOT verwendet.
  • -- <arguments>: Übergibt alles nach den Bindestrichen als Testargumente.
  • --verbose: Gibt eine ausführliche Ausgabe aus.
  • --help: Zeigt die Hilfeinformationen an.

Beispiel für die Verwendung

Hier ist ein Beispiel, das den tst_android Test ausführt, wobei nur der testAssets Testfall ausgeführt wird:

androidtestrunner \
    --path ~/tst_android/build/android-build-tst_openssl \
    --make "cmake --build ~/tst_android/build --target apk" \
    --apk ~/tst_android/build/android-build-tst_openssl/tst_openssl.apk \
    --skip-install-root \
    testAssets

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.