Auf dieser Seite

Das Tool „androidtestrunner“

Einführung

Das Tool „ androidtestrunner “ führt Qt-Tests auf Android-Geräten und -Emulatoren aus. Es automatisiert die zur Durchführung der Tests erforderlichen Schritte, darunter die Verwaltung der APK-Installation, die Testausführung und das Abrufen der Ergebnisse.

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

So funktioniert es

  1. Zunächst wird der Befehl zum Erstellen der APK ausgeführt, um die für den Test erforderliche APK zu generieren.
  2. Anschließend wird die Test-App auf dem Zielgerät installiert und gestartet, wodurch der Testprozess in Gang gesetzt wird.
  3. Die Testergebnisse werden in das Datenverzeichnis der App auf dem Gerät geschrieben, wodurch sichergestellt wird, dass umfassende Testergebnisse erfasst werden.
  4. Sobald die Tests abgeschlossen sind, erstellt der Runner neben den Ergebnisdateien eine Datei mit dem Exit-Code.
  5. In dieser Phase ruft der „ androidtestrunner “ diese Ergebnisdateien vom Gerät ab und überprüft den Exit-Code auf Fehler.
  6. Werden Probleme festgestellt, gibt er sofort die Logcat-Protokolle der App aus, einschließlich möglicher Absturz-Stack-Traces, die so aufbereitet werden, dass Dateinamen und Zeilennummern für jeden Frame erkennbar sind. Zudem erfasst und meldet er „Application Not Responding“ (ANR)-Protokolle, falls solche Ereignisse während der Testausführung auftreten.

Um die Integration zu optimieren, überträgt der Testläufer die Umgebungsvariablen „QT“ oder „QTEST“ aus der Host-Umgebung des Testläufer-Prozesses an die App und gewährleistet so Konsistenz und einen nahtlosen Testablauf.

Ausführen von Tests mit dem Test-Wrapper

Qt generiert neben jedem Android-Test ein zielspezifisches Wrapper-Skript (benannt nach dem Testziel), das „ androidtestrunner “ mit den richtigen Pfaden aufruft und zusätzliche Argumente an die Test-Binärdatei weiterleitet. Das folgende Beispiel führt „ tst_android “ auf einem bestimmten Emulator aus, leitet eine Qt-Umgebungsvariable weiter und führt nur den Testfall „ testAssets “ aus:

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

Abrufen der Ergebnisse

Standardmäßig und sofern die Testausgabe über stdout nicht explizit deaktiviert wurde, werden die Testergebnisse während der Testausführung auf dem Host ausgegeben. Nach Abschluss der Tests werden alle explizit angeforderten Testdateien in den angegebenen Ausgabepfad in ihren jeweiligen Formaten kopiert.

Umfassende Informationen zum „ Qt Test “-Framework finden Sie unter „Qt Test -Übersicht“.

So verwenden Sie es

Die grundlegende Syntax zum Ausführen des „ androidtestrunner “ lautet wie folgt:

androidtestrunner [ARGUMENTS] -- [TESTARGS]

Um den Test auf einem bestimmten Gerät oder Emulator auszuführen, übergeben Sie „ --serial <serial> “ oder setzen Sie die Umgebungsvariable „ adb “ auf „ ANDROID_SERIAL “ oder „ ANDROID_DEVICE_SERIAL “. Die explizit angegebene Option hat Vorrang.

Erforderliche Argumente

Der Test-Runner erwartet immer, dass die folgenden Argumente übergeben werden:

  • --path <build-path>: Der Pfad, unter dem das Android-Gradle-Paket erstellt wurde, in der Regel <build-dir>/android-build-<target>.
  • --make <build-command>: Der Befehl zum Erstellen der Test-APK, 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 Testlaufers, sondern als Wert des Arguments „ --make “ behandelt wird.

  • Eines der folgenden:
    • --apk <apk-path>: Pfad zur Test-APK, die durch den Build-Befehl generiert und auf dem Gerät installiert wurde.
    • --aab <aab-path>: Pfad zur Test-AAB; erfordert „ --bundletool “. Beide Optionen können nicht gleichzeitig festgelegt werden und dürfen jeweils nur einmal angegeben werden.

Optionale Argumente

Sie können außerdem die folgenden optionalen Argumente übergeben:

  • --bundletool <path>: Pfad zur Android- bundletool -JAR-Datei. Erforderlich, wenn „ --aab “ verwendet wird.
  • --manifest <path>: Benutzerdefinierter Pfad zur „ AndroidManifest.xml “. Standardmäßig wird eine Datei verwendet, die im Build-Pfad oder dessen Unterverzeichnis „ app/ “ gefunden wird.
  • --adb <adb-path>: Gibt einen benutzerdefinierten ADB-Befehlspfad an. Standardmäßig ist dies der Pfad „ adb “, der sich im Verzeichnis „ $PATH “ des Systems befindet.
  • --serial <serial>: Seriennummer des Android-Geräts, das als Ziel dienen soll. Überschreibt „ ANDROID_SERIAL “ und „ ANDROID_DEVICE_SERIAL “.
  • --activity <activity-name>: Legt eine benutzerdefinierte Aktivität fest, die ausgeführt werden soll. Standardmäßig ist dies die erste im „ AndroidManifest.xml “ definierte Aktivität.
  • --timeout <seconds>: Legt das Timeout für die Ausführung des Tests fest. Standardwert ist 600 Sekunden (10 Minuten).
  • --pre-test-adb-command <command>: Ruft nach der Installation und vor dem Testlauf den adb- <command> auf. Kann mehrfach übergeben werden.
  • --skip-install-root: Unterdrückt das automatische „ INSTALL_ROOT=<path> install “-Suffix, das an „ --make “ angehängt wird, wenn es sich bei dem Build-Befehl um ein „ make-family “-Tool handelt (make, gmake, nmake, mingw32-make, jom; der Abgleich erfolgt unabhängig von der Groß-/Kleinschreibung). Das Suffix wird niemals an „ cmake “, „ ninja “ oder andere Build-Treiber angehängt, sodass diese Option nur bei den aufgeführten Tools wirksam ist.
  • --ndk-stack <command-path>: Gibt den Pfad zum ndk-stack-Tool zur Symbolisierung von Absturz-Stack-Traces an. Standardmäßig wird der unter $ANDROID_NDK_ROOT gefundene Tool-Pfad verwendet.
  • --show-logcat: Gibt die Logcat-Ausgabe unabhängig vom Testausfall auf stdout aus. Liest die Haupt-, System- und Absturzpuffer und fügt Zeilen aus system_server ein, wenn ein ANR erkannt wird.
  • --verbose: Gibt eine ausführliche Ausgabe aus.
  • -- <arguments>: Gibt alles, was nach den Bindestrichen steht, als Testargumente weiter.
  • --help: Zeigt die Hilfeinformationen an.

Anwendungsbeispiel

Hier ist ein Beispiel, das den Test „ tst_android “ ausführt und dabei nur den Testfall „ testAssets “ ausführt:

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 \
    testAssets

© 2026 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.