openharmony-ut

Automate OpenHarmony unit test and fuzz test workflows including test generation, compilation, deployment to devices, and execution. Use when writing, building, or running UT/FuzzTest for OpenHarmony projects.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "openharmony-ut" with this command: npx skills add openharmonyinsight/openharmony-skills/openharmonyinsight-openharmony-skills-openharmony-ut

OpenHarmony UT 自动化

初始化配置

重要:在执行任何操作前,必须先收集用户配置信息。

首次使用此 skill 时,请按以下顺序询问用户配置:

1. 项目根目录路径

请输入 OpenHarmony 项目根目录路径
默认:/root/OpenHarmony

2. 编译产物路径

请输入编译产物输出路径
默认:${项目根目录}/out/rk3568/tests

3. 编译命令

请输入编译命令
模板(使用 ${OH_ROOT} 和 ${TARGET} 变量)
默认:cd ${OH_ROOT} && ./build.sh --product-name=rk3568 --build-target  ${TARGET}

4. Windows IP 地址

请输入 Windows 机器的 IP 地址(用于 hdc 连接)
格式:x.x.x.x
端口固定使用 8710

自动获取选项:如果当前环境是 WSL,可以先尝试自动获取:

WIN_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
echo $WIN_IP

询问用户是否使用自动获取之后的 IP,或手动输入。

5. 连接验证(⚠️ 必须执行)

配置完 IP 后,必须依次执行以下验证步骤,确保设备可用:

5.1 验证 IP 地址可达性

ping -c 3 ${WINDOWS_IP}

判断标准

  • 成功:收到 3 个 reply,无 100% packet loss
  • 失败:请求超时或 unreachable

失败处理

❌ 无法 ping 通 ${WINDOWS_IP}
请检查:
1. Windows 机器是否开机
2. 网络连接是否正常
3. IP 地址是否正确
4. Windows 防火墙是否允许 ping(ICMP)

5.2 验证 HDC 端口可连接

nc -zv -w 3 ${WINDOWS_IP} 8710

判断标准

  • 成功:显示 succeeded!Connection to xxx 8710 port [tcp/*] succeeded!
  • 失败:显示 timed outConnection refused

失败处理

❌ 无法连接到 ${WINDOWS_IP}:8710
请检查:
1. HDC 服务是否在 Windows 上启动
2. 端口 8710 是否被防火墙阻止
3. hdc_std.exe 是否在 Windows 上运行

启动 HDC 服务方法(Windows 管理员权限 PowerShell):
hdc_std start -l

5.3 验证设备列表

hdc -s ${WINDOWS_IP}:8710 list targets

判断标准

  • 成功:返回设备序列号,如 xxxxx
  • 失败:返回 [Empty] 或报错

失败处理

❌ 未检测到可用设备
请检查:
1. OpenHarmony 设备是否开机
2. 设备是否通过 USB 连接到 Windows 机器
3. hdc_std 是否正确识别设备

手动查看设备(Windows 上执行):
hdc_std list targets

5.4 验证 Shell 连接

hdc -s ${WINDOWS_IP}:8710 shell "echo 'connection OK'"

判断标准

  • 成功:返回 connection OK
  • 失败:显示错误或无响应

失败处理

❌ Shell 连接失败
请检查 hdc 版本兼容性

6. 配置变量说明

收集到的配置将存储为以下变量,后续命令中使用:

  1. OH_ROOT - 项目根目录
  2. OH_OUTPUT - 编译产物路径
  3. BUILD_CMD - 编译命令模板
  4. WINDOWS_IP - Windows IP,端口固定为 8710

快速命令

编译测试

cd ${OH_ROOT}/ && ${BUILD_CMD} <TARGET_NAME>

部署到设备

hdc -s ${WINDOWS_IP}:8710 shell "mkdir -p /data/test/"
hdc -s ${WINDOWS_IP}:8710 file send <TARGET_PATH> /data/test

运行测试

hdc shell -s ${WINDOWS_IP}:8710 "chmod +x /data/test/<TARGET_NAME> && /data/test/<TARGET_NAME>"

自动化流程

完整流程(编写 + 运行)

当用户请求"编写并运行"或类似明确包含编写意图时,按以下顺序执行:

  1. 编写 - 生成测试代码,命名必须与 build target 一致
  2. 编译 - 执行构建命令
  3. 部署 - 上传到设备 /data/test/
  4. 运行 - 执行测试并返回结果
  5. 修复 - 如失败则修复错误直到通过

仅运行流程(⚠️ 优先使用)

当用户仅说"运行用例"、"跑一下这个用例"等,没有明确提及编写或修改代码时:

  1. 先查找编译产物 - 检查是否已有编译好的文件:

    cd ${OH_OUTPUT}/ && find . -name <TARGET_NAME>
    
  2. 如果找到 - 直接跳到部署步骤

  3. 如果找不到 - 再执行编译,然后继续部署运行

判断依据:用户请求是否包含"编写"、"写"、"生成"、"创建"等动词

关键规则

  1. 命名: 测试名必须与 BUILD.gn target 一致(如 LnnNetBuilderFuzzTest
  2. 位置: 放在对应模块的 tests 目录下
  3. 风格: 遵循 OpenHarmony HWTEST_F 规范,不使用 GoogleTest main
  4. 禁魔数: 所有常量必须有命名

详细文档

  1. environment.md - 构建环境架构和路径说明
  2. test-generation.md - 测试编写规范
  3. build-guide.md - 编译命令和产物说明
  4. deployment.md - 部署步骤详解
  5. execution.md - 测试执行和故障排除

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

ai-generated-business-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ai-generated-ut-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

oh-pdd-code-generator

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-checker

No summary provided by upstream source.

Repository SourceNeeds Review