androidtestrunner 工具

简介

androidtestrunner 工具可在 Android 设备和模拟器上运行 Qt Test。它能自动执行测试所需的步骤,包括管理 APK 安装、执行测试和检索结果。

在使用androidtestrunner 之前,请确保已用 CMake 或 qmake 配置了 Qt Test 项目。

工作原理

  1. 首先,它执行 APK 构建命令,生成测试所需的 APK。
  2. 然后,它将测试应用程序安装到目标设备上,并启动测试应用程序,启动测试过程。
  3. 测试结果会写入设备上应用程序的数据目录,确保捕捉到全面的测试输出。
  4. 测试结束后,运行程序会在结果文件旁写入退出代码文件。
  5. 在此阶段,androidtestrunner 从设备中检索这些结果文件,检查退出代码是否有故障。
  6. 如果检测到问题,它会立即打印应用程序的 logcat 日志,包括任何潜在的崩溃堆栈跟踪,这些跟踪会经过美化,以显示每帧的文件名和行号。此外,如果测试执行期间发生应用程序无响应(ANR)事件,它还会捕获并报告此类日志。

为了增强集成体验,测试运行器会将 QT 或 QTEST 环境变量从测试运行器进程的主机环境传播到应用程序,从而确保一致性和无缝测试工作流程。

使用测试封装器运行测试

下面是一个在特定模拟器实例上运行tst_android 测试的示例,通过环境变量,只执行testAssets 测试用例:

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

检索结果

默认情况下,如果没有明确禁用 stdout 测试输出,测试结果会在测试执行时打印到主机上。运行测试后,任何明确请求的测试文件都会以各自的格式存入指定的输出路径。

有关Qt Test Framework 的全面详情,请参阅Qt Test Overview

如何使用

运行androidtestrunner 的基本语法如下:

androidtestrunner [ARGUMENTS] -- [TESTARGS]

要在特定设备/模拟器上运行测试,请使用adb 环境变量ANDROID_SERIALANDROID_DEVICE_SERIAL

必备参数

测试运行程序总是希望传递以下参数:

  • --path <build-path>:构建 Android Gradle 软件包的路径,通常在android-build-testname 下。
  • --make <build-command>:用于构建测试 APK 的命令,例如cmake --build <build-dir> --target <target>_make_apk

    注意: 传递此参数时要加引号,这样它就不会被视为测试运行程序的多个参数,而会被视为--make 参数的值。

  • --apk <apk-path>:由构建命令生成并安装到设备上的测试 APK 的路径。

可选参数

您还可以传递以下可选参数:

  • --adb <adb-path>:指定自定义 ADB 命令路径。默认为系统$PATH 中的adb 路径。
  • --activity <activity-name>:指定要运行的自定义活动。默认为AndroidManifest.xml 中定义的第一个活动。
  • --timeout <seconds>:设置运行测试的超时时间。默认为 600 秒(10 分钟)。
  • --skip-install-root:避免在 make 命令中追加 INSTALL_ROOT,主要在使用qmake 时有用。
  • --show-logcat:无论测试是否失败,都将 logcat 输出打印到 stdout。失败时会打印日志,其中可能包括崩溃堆栈跟踪或 ANR 事件。
  • --ndk-stack <command-path>:指定用于符号化崩溃堆栈跟踪的ndk-stack工具的路径。默认为$ANDROID_NDK_ROOT 下的工具路径。
  • --pre-test-adb-command <command>adb:在安装后和测试运行前调用 adb <command>。
  • -- <arguments>:将破折号后的内容作为测试参数传递。
  • --verbose:打印详细输出。
  • --help:显示帮助信息。

使用示例

下面是一个运行tst_android 测试的示例,仅执行testAssets 测试用例:

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.