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
androidtestrunnerdiese 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
Das folgende Beispiel zeigt, wie der Test tst_android auf einer bestimmten Emulatorinstanz ausgeführt wird, 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 deradbPfad, der auf dem System unter$PATHzu finden ist.--activity <activity-name>: Gibt eine benutzerdefinierte Aktivität an, die ausgeführt werden soll. Standardmäßig wird die erste imAndroidManifest.xmldefinierte 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 vonqmakenü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 Toolpfad unter$ANDROID_NDK_ROOTverwendet.--pre-test-adb-command <command>adb <Befehl> nach der Installation und vor dem Testlauf aufrufen.-- <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.