鸿蒙创新能力测试流程

« Back to guide index

鸿蒙创新能力测试流程

本文用于指导如何测试当前已经加入鸿蒙源码的创新能力组件,包括:

  1. AdaptiveExperience
  2. HarmonyFlow
  3. HarmonyBridge
  4. HarmonyScenarioKit
  5. HarmonyTemplateRenderer
  6. HarmonyStyleKit
  7. HarmonyWorkspaceKit
  8. HarmonyLaunchKit

一、代码侧基础验证

每次改动后先执行:

ant -f harmony-build.xml tests
ant -f harmony-build.xml AIPlayApp

判定标准:

  1. tests 成功,说明单测与测试入口语法无误。
  2. AIPlayApp 成功,说明 ArkTS 编译、组件注册和 HAP 打包链路可用。
  3. HAP 产物存在于:
aiplayapp-oh/entry/build/default/outputs/default/ChineseAppInventor.hap

二、组件级联调流程

建议按“从下到上”的顺序测试,而不是一上来就测试完整模板渲染。

1. 测试 AdaptiveExperience

目标:确认当前设备场景识别合理。

建议在积木中依次调用:

  1. GetSceneProfile
  2. GetRecommendedColumns
  3. GetRecommendedNavigation
  4. GetSceneJson

检查点:

  1. 手机竖屏时通常应得到 compact。
  2. 平板或大屏设备应可能得到 medium 或 expanded。
  3. SceneJson 中的 navigation 和 columns 应与前面方法返回值一致。

2. 测试 HarmonyFlow

目标:确认状态与载荷构建稳定。

建议步骤:

  1. 先调用 SetStateValue("accent", "#0F62FE")
  2. 再调用 SetStateValue("deviceCount", "3")
  3. 调用 BuildCardModel(...)
  4. 调用 BuildContinuationCommand(...)
  5. 查看 GetLastPayload()

检查点:

  1. 返回 JSON 中应有 protocol 与 kind。
  2. 状态字段应出现在 state 中。
  3. 不合法 JSON 输入时,原始字符串应被保留在 raw 结构中,而不是静默丢失。

3. 测试 HarmonyBridge

目标:确认入口 Want 可被稳定生成,且在条件满足时可发起 Ability。

建议步骤:

  1. 配置 DefaultBundleName
  2. 配置 DefaultAbilityName
  3. 调用 PrepareCardWant(...)
  4. 查看 GetLastWantJson()
  5. 在具备目标 Ability 的情况下调用 LaunchWantJson(...)

检查点:

  1. Want JSON 中应包含 bundleName、abilityName、action。
  2. 没有上下文时应触发 LaunchFailed,而不是崩溃。
  3. 目标 Ability 存在时应触发 LaunchSucceeded。

4. 测试 HarmonyScenarioKit

目标:确认模板 JSON 结构稳定,适合作为上层编排输入。

建议步骤:

  1. 调用 BuildServiceCenterTemplate(...)
  2. 调用 BuildDeviceControlTemplate(...)
  3. 调用 BuildContinuationWorkspaceTemplate(...)
  4. 调用 BuildAtomicLandingTemplate(...)

检查点:

  1. 返回 JSON 中 protocol 应为 harmony-scenario/1.0。
  2. sections 数组应存在且结构稳定。
  3. sceneProfile、recommendedColumns、navigation 应与设计预期匹配。

5. 测试 HarmonyTemplateRenderer

目标:确认模板不仅能生成,还能真正展开成页面骨架。

建议步骤:

  1. 先准备一个 VerticalArrangement 作为容器。
  2. 用 HarmonyScenarioKit 生成模板 JSON。
  3. 调用 MaterializeTemplate(containerName, templateJson, "DemoTpl")
  4. 查看 GetLastRootName() 与 GetLastComponentCount()

检查点:

  1. 返回值应为 true。
  2. LastRootName 应非空。
  3. LastComponentCount 应大于 0。
  4. 页面上应出现标题、元信息、多个分区和按钮骨架。

6. 测试 HarmonyStyleKit

目标:确认模板不仅有骨架,还能根据鸿蒙场景切换成正式页面风格。

建议步骤:

  1. 先调用 BuildSceneTheme("expanded", "iot-control", "#0F62FE")
  2. 查看 GetLastThemeJson()
  3. 先完成一次 HarmonyTemplateRenderer.MaterializeTemplate(...)
  4. 再调用 ApplyThemeToTemplate(rootName, templateJson, themeJson)
  5. 最后调用 ApplyThemeToForm(themeJson)

检查点:

  1. 返回 JSON 中 protocol 应为 harmony-style/1.0。
  2. sceneProfile、flavor、accentColor 应与输入一致。
  3. ApplyThemeToTemplate(...) 返回值应为 true。
  4. LastAppliedCount 应大于 0。
  5. 页面背景、分区背景、标题字号和按钮配色应明显变化。

7. 测试 HarmonyWorkspaceKit

目标:确认积木侧已经可以用“一步编排”方式直接生成较完整的鸿蒙正式页面基础版。

建议步骤:

  1. 先准备一个 VerticalArrangement 作为页面容器。
  2. 调用 ComposeDeviceControlWorkspace(containerName, "expanded", "超级终端", deviceStateJson, launchWantJson, "#0F62FE", "WorkspaceDemo")
  3. 查看 GetLastTemplateJson()
  4. 查看 GetLastThemeJson()
  5. 查看 GetLastRootName() 与 GetLastComponentCount()

检查点:

  1. 调用返回值应为 true。
  2. LastTemplateJson 应包含 harmony-scenario/1.0。
  3. LastThemeJson 应包含 harmony-style/1.0。
  4. LastRootName 应非空。
  5. 页面应已经同时具备骨架结构和场景主题,而不是只剩默认样式。

8. 测试 HarmonyLaunchKit

目标:确认状态、入口、模板和主题已经能统一打包,便于后续服务卡片、流转和入口分发复用。

建议步骤:

  1. 调用 BuildAtomicLaunchPackage("compact", "即开即用", "svc.demo", "cn.fun123.demo", "EntryAbility", "pages/Home", "#FF6B00", "{\"tab\":\"quick\"}")
  2. 查看 GetLastPackageJson()
  3. 再分别测试 BuildServiceCenterLaunchPackage(...) 和 BuildContinuationLaunchPackage(...)

检查点:

  1. 返回 JSON 中 protocol 应为 harmony-launch-package/1.0。
  2. 包内应同时包含 flowPayloadJson、wantJson、templateJson、themeJson。
  3. templateJson 应包含 harmony-scenario/1.0。
  4. themeJson 应包含 harmony-style/1.0。
  5. wantJson 应包含 harmony-bridge/1.0。

三、推荐真机验证场景

为了体现鸿蒙特色,建议至少做以下 3 类真机验证:

1. 多形态验证

  1. 手机竖屏
  2. 平板横屏
  3. 大屏或桌面模式

重点观察:

  1. AdaptiveExperience 返回是否变化。
  2. 同一模板在不同设备上是否能生成不同的布局语义。

2. 服务卡片/原子入口验证

即便当前还没有完整系统卡片渲染器,也建议验证:

  1. HarmonyFlow 生成的数据模型是否完整
  2. HarmonyBridge 生成的 Want 是否可用
  3. 从模板到入口数据的衔接是否一致

3. 流转接续验证

建议模拟:

  1. 在设备 A 生成 continuation payload
  2. 使用 HarmonyBridge 生成 continuation Want
  3. 用 HarmonyScenarioKit 生成 continuation workspace 模板
  4. 用 HarmonyStyleKit 生成 continuation 主题并应用
  5. 用 HarmonyWorkspaceKit 直接生成一版 continuation 页面作对照
  6. 用 HarmonyLaunchKit 输出 continuation 发布包作对照

重点观察:

  1. 业务上下文是否仍然完整
  2. 页面结构是否仍适合继续任务
  3. 主题风格是否仍能体现“继续处理同一任务”的连续性
  4. 一步编排结果和手工分层编排结果是否保持一致
  5. 发布包中的入口、模板和主题是否与页面实际结果一致

四、回归检查建议

每次继续扩展这套能力后,至少回归以下内容:

  1. tests 是否通过
  2. AIPlayApp 是否通过
  3. 组件是否正确导出到 index.ets
  4. 组件是否正确注册到 YailRuntime.ets
  5. ExtensionComponentTest.test.ets 是否补了对应覆盖
  6. extension.md 是否补了文档

五、推荐阶段验收标准

可以按下面标准判断某一轮是否达到“可阶段提交”:

  1. 组件不是空壳,至少有一个真实可用的主能力。
  2. 代码中没有新增“后续再做”“临时方案”“假成功”的主路径。
  3. 有单测或描述符测试覆盖。
  4. AIPlayApp 打包成功。
  5. 文档已同步更新。

六、推荐完整联调顺序

如果要从零验证整条鸿蒙创新链,建议按下面顺序进行:

  1. AdaptiveExperience 识别当前设备场景
  2. HarmonyFlow 生成状态与流转载荷
  3. HarmonyBridge 生成 Want 或入口快照
  4. HarmonyScenarioKit 产出页面模板 JSON
  5. HarmonyTemplateRenderer 把模板落地成页面骨架
  6. HarmonyStyleKit 根据设备场景和业务风格应用主题
  7. HarmonyWorkspaceKit 用于最终验证“一步编排”链路是否可直接交付积木侧
  8. HarmonyLaunchKit 用于验证“生成结果是否已经可打包复用”

这样可以把问题快速定位到“场景识别层”“模板生成层”“页面落地层”还是“主题应用层”,不容易在一次联调里把所有问题混在一起。

文档反馈