鸿蒙创新能力测试流程
本文用于指导如何测试当前已经加入鸿蒙源码的创新能力组件,包括:
AdaptiveExperienceHarmonyFlowHarmonyBridgeHarmonyScenarioKitHarmonyTemplateRendererHarmonyStyleKitHarmonyWorkspaceKitHarmonyLaunchKit
一、代码侧基础验证
每次改动后先执行:
ant -f harmony-build.xml tests
ant -f harmony-build.xml AIPlayApp
判定标准:
tests成功,说明单测与测试入口语法无误。AIPlayApp成功,说明 ArkTS 编译、组件注册和 HAP 打包链路可用。- HAP 产物存在于:
aiplayapp-oh/entry/build/default/outputs/default/ChineseAppInventor.hap
二、组件级联调流程
建议按“从下到上”的顺序测试,而不是一上来就测试完整模板渲染。
1. 测试 AdaptiveExperience
目标:确认当前设备场景识别合理。
建议在积木中依次调用:
GetSceneProfileGetRecommendedColumnsGetRecommendedNavigationGetSceneJson
检查点:
- 手机竖屏时通常应得到
compact。 - 平板或大屏设备应可能得到
medium或expanded。 SceneJson中的navigation和columns应与前面方法返回值一致。
2. 测试 HarmonyFlow
目标:确认状态与载荷构建稳定。
建议步骤:
- 先调用
SetStateValue("accent", "#0F62FE") - 再调用
SetStateValue("deviceCount", "3") - 调用
BuildCardModel(...) - 调用
BuildContinuationCommand(...) - 查看
GetLastPayload()
检查点:
- 返回 JSON 中应有
protocol与kind。 - 状态字段应出现在
state中。 - 不合法 JSON 输入时,原始字符串应被保留在
raw结构中,而不是静默丢失。
3. 测试 HarmonyBridge
目标:确认入口 Want 可被稳定生成,且在条件满足时可发起 Ability。
建议步骤:
- 配置
DefaultBundleName - 配置
DefaultAbilityName - 调用
PrepareCardWant(...) - 查看
GetLastWantJson() - 在具备目标 Ability 的情况下调用
LaunchWantJson(...)
检查点:
- Want JSON 中应包含
bundleName、abilityName、action。 - 没有上下文时应触发
LaunchFailed,而不是崩溃。 - 目标 Ability 存在时应触发
LaunchSucceeded。
4. 测试 HarmonyScenarioKit
目标:确认模板 JSON 结构稳定,适合作为上层编排输入。
建议步骤:
- 调用
BuildServiceCenterTemplate(...) - 调用
BuildDeviceControlTemplate(...) - 调用
BuildContinuationWorkspaceTemplate(...) - 调用
BuildAtomicLandingTemplate(...)
检查点:
- 返回 JSON 中
protocol应为harmony-scenario/1.0。 sections数组应存在且结构稳定。sceneProfile、recommendedColumns、navigation应与设计预期匹配。
5. 测试 HarmonyTemplateRenderer
目标:确认模板不仅能生成,还能真正展开成页面骨架。
建议步骤:
- 先准备一个
VerticalArrangement作为容器。 - 用
HarmonyScenarioKit生成模板 JSON。 - 调用
MaterializeTemplate(containerName, templateJson, "DemoTpl") - 查看
GetLastRootName()与GetLastComponentCount()
检查点:
- 返回值应为
true。 LastRootName应非空。LastComponentCount应大于 0。- 页面上应出现标题、元信息、多个分区和按钮骨架。
6. 测试 HarmonyStyleKit
目标:确认模板不仅有骨架,还能根据鸿蒙场景切换成正式页面风格。
建议步骤:
- 先调用
BuildSceneTheme("expanded", "iot-control", "#0F62FE") - 查看
GetLastThemeJson() - 先完成一次
HarmonyTemplateRenderer.MaterializeTemplate(...) - 再调用
ApplyThemeToTemplate(rootName, templateJson, themeJson) - 最后调用
ApplyThemeToForm(themeJson)
检查点:
- 返回 JSON 中
protocol应为harmony-style/1.0。 sceneProfile、flavor、accentColor应与输入一致。ApplyThemeToTemplate(...)返回值应为true。LastAppliedCount应大于 0。- 页面背景、分区背景、标题字号和按钮配色应明显变化。
7. 测试 HarmonyWorkspaceKit
目标:确认积木侧已经可以用“一步编排”方式直接生成较完整的鸿蒙正式页面基础版。
建议步骤:
- 先准备一个
VerticalArrangement作为页面容器。 - 调用
ComposeDeviceControlWorkspace(containerName, "expanded", "超级终端", deviceStateJson, launchWantJson, "#0F62FE", "WorkspaceDemo") - 查看
GetLastTemplateJson() - 查看
GetLastThemeJson() - 查看
GetLastRootName()与GetLastComponentCount()
检查点:
- 调用返回值应为
true。 LastTemplateJson应包含harmony-scenario/1.0。LastThemeJson应包含harmony-style/1.0。LastRootName应非空。- 页面应已经同时具备骨架结构和场景主题,而不是只剩默认样式。
8. 测试 HarmonyLaunchKit
目标:确认状态、入口、模板和主题已经能统一打包,便于后续服务卡片、流转和入口分发复用。
建议步骤:
- 调用
BuildAtomicLaunchPackage("compact", "即开即用", "svc.demo", "cn.fun123.demo", "EntryAbility", "pages/Home", "#FF6B00", "{\"tab\":\"quick\"}") - 查看
GetLastPackageJson() - 再分别测试
BuildServiceCenterLaunchPackage(...)和BuildContinuationLaunchPackage(...)
检查点:
- 返回 JSON 中
protocol应为harmony-launch-package/1.0。 - 包内应同时包含
flowPayloadJson、wantJson、templateJson、themeJson。 templateJson应包含harmony-scenario/1.0。themeJson应包含harmony-style/1.0。wantJson应包含harmony-bridge/1.0。
三、推荐真机验证场景
为了体现鸿蒙特色,建议至少做以下 3 类真机验证:
1. 多形态验证
- 手机竖屏
- 平板横屏
- 大屏或桌面模式
重点观察:
AdaptiveExperience返回是否变化。- 同一模板在不同设备上是否能生成不同的布局语义。
2. 服务卡片/原子入口验证
即便当前还没有完整系统卡片渲染器,也建议验证:
HarmonyFlow生成的数据模型是否完整HarmonyBridge生成的 Want 是否可用- 从模板到入口数据的衔接是否一致
3. 流转接续验证
建议模拟:
- 在设备 A 生成 continuation payload
- 使用
HarmonyBridge生成 continuation Want - 用
HarmonyScenarioKit生成 continuation workspace 模板 - 用
HarmonyStyleKit生成 continuation 主题并应用 - 用
HarmonyWorkspaceKit直接生成一版 continuation 页面作对照 - 用
HarmonyLaunchKit输出 continuation 发布包作对照
重点观察:
- 业务上下文是否仍然完整
- 页面结构是否仍适合继续任务
- 主题风格是否仍能体现“继续处理同一任务”的连续性
- 一步编排结果和手工分层编排结果是否保持一致
- 发布包中的入口、模板和主题是否与页面实际结果一致
四、回归检查建议
每次继续扩展这套能力后,至少回归以下内容:
tests是否通过AIPlayApp是否通过- 组件是否正确导出到
index.ets - 组件是否正确注册到
YailRuntime.ets ExtensionComponentTest.test.ets是否补了对应覆盖extension.md是否补了文档
五、推荐阶段验收标准
可以按下面标准判断某一轮是否达到“可阶段提交”:
- 组件不是空壳,至少有一个真实可用的主能力。
- 代码中没有新增“后续再做”“临时方案”“假成功”的主路径。
- 有单测或描述符测试覆盖。
AIPlayApp打包成功。- 文档已同步更新。
六、推荐完整联调顺序
如果要从零验证整条鸿蒙创新链,建议按下面顺序进行:
AdaptiveExperience识别当前设备场景HarmonyFlow生成状态与流转载荷HarmonyBridge生成 Want 或入口快照HarmonyScenarioKit产出页面模板 JSONHarmonyTemplateRenderer把模板落地成页面骨架HarmonyStyleKit根据设备场景和业务风格应用主题HarmonyWorkspaceKit用于最终验证“一步编排”链路是否可直接交付积木侧HarmonyLaunchKit用于验证“生成结果是否已经可打包复用”
这样可以把问题快速定位到“场景识别层”“模板生成层”“页面落地层”还是“主题应用层”,不容易在一次联调里把所有问题混在一起。
扫码添加客服咨询