本页内容

harmonyostestrunner 工具

注意: HarmonyOS 版Qt 目前处于技术预览阶段,未来版本中可能会发生变更。

简介

harmonyostestrunner 工具可在HarmonyOS设备或模拟器上运行单个Qt自动测试,并在主机上报告结果。当您使用ctest 运行测试时,CMake测试封装器通常会为您调用该工具。 当测试 HAP 在一台机器上构建,但设备连接在另一台机器上时,或者当您手头有测试 HAP 但没有 CMake 构建树时,请直接调用该工具。

该工具不会构建或安装测试包。相反,harmonydeployqt会将测试二进制文件打包为单个测试 HAP(通过其--test-bundle 选项)。您必须事先构建、签名并将该 HAP 安装到设备上:

hdc install <path/to/autotests-signed.hap>

工作原理

  1. 它会验证目标设备上是否已安装测试包 HAP。
  2. 它会强制停止该软件包的任何正在运行的实例,然后使用 `aa start` 启动该功能,同时告知平台应加载哪个测试共享库,以及在应用程序沙盒内将测试的标准输出和退出代码重定向到何处。
  3. 在测试运行期间,将测试的标准输出流式传输到主机。
  4. 它等待测试结束,当退出代码文件可读时,即检测到测试结束。一个活跃性检查会捕获崩溃的进程,而可选的无进度看门狗会强制停止不再产生PASS 或FAIL 结果的测试。
  5. 如果测试声明了阻塞系统对话框,且测试输出停止,则会使用uitest 转储屏幕布局,并点击预期的按钮。
  6. 它将测试的退出代码作为自身的退出代码返回。

使用方法

基本语法如下:

harmonyostestrunner [OPTIONS] <test-binary> [TESTARGS]

<test-binary> 参数是测试共享库的路径,例如libtst_qobject.so 。其文件名用于指定要运行的包内测试。该参数之后的任何内容(如测试函数名或-v2 )都会由工具转发给测试。

选项

下表列出了harmonyostestrunner 的命令行选项。您可以通过括号中的环境变量设置每个选项。命令行值具有优先级。

选项说明
--bundle-name <name>已安装测试 HAP(QT_HARMONYOS_BUNDLE_NAME )的 HarmonyOS 包名。默认值为org.qtproject.autotests 。
--ability-name <name>测试 HAP(QT_HARMONYOS_ABILITY_NAME )内的 HarmonyOS 能力名称。默认为QAbility 。
--hdc <path>hdc 工具的路径(QT_HARMONYOS_HDC )。默认值为PATH 中的hdc 。
--timeout <seconds>在终止测试前等待测试完成的秒数(QT_HARMONYOS_TEST_TIMEOUT )。默认值为 300。
--no-progress-timeout <seconds>在未收到PASS 或FAIL 结果的情况下,工具等待 秒后将判定测试挂起(QT_HARMONYOS_NO_PROGRESS_TIMEOUT )。默认值为 60;设置为 0 则禁用看门狗。
--device <key>目标设备的hdc 连接密钥(-t )(QT_HARMONYOS_DEVICE )。连接多个设备时必需。
--test-config <path>生成的测试包部署设置的路径(QT_HARMONYOS_TEST_CONFIG )。构建过程会生成此文件,CMake 测试封装器会将其传递出去。该工具会读取该文件,以处理其必须响应的阻塞式系统对话框。
--help显示帮助信息。
--version显示工具版本。

使用示例

在特定设备上运行tst_qobject 测试,仅执行signalsBlocked 测试用例:

harmonyostestrunner --device 127.0.0.1:5555 libtst_qobject.so signalsBlocked

有关Qt Test 框架的更多信息,请参阅《Qt Test 概述》。

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