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
- Zunächst wird der APK-Build-Befehl ausgeführt, um die erforderliche APK für den Test zu generieren.
- Anschließend wird die Test-App auf dem Zielgerät installiert und gestartet, um den Testprozess in Gang zu setzen.
- Die Testergebnisse werden in das Datenverzeichnis der App auf dem Gerät geschrieben, um sicherzustellen, dass umfassende Testausgaben erfasst werden.
- Nach Abschluss der Tests schreibt der Läufer neben den Ergebnisdateien auch eine Exit-Code-Datei.
- In diesem Stadium ruft
androidtestrunner
diese Ergebnisdateien vom Gerät ab und untersucht den Exit-Code auf Fehler. - 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 unterandroid-build-testname
.--make <build-command>
: Der Befehl, mit dem die Test-APK erstellt wurde, zum Beispielcmake --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 deradb
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 imAndroidManifest.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 vonqmake
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.