立即注册
查看: 863|回复: 2

[鸿蒙OS技术分享] HarmonyOS单元测试框架介绍

已绑定手机
发表于 2021-7-23 17:23:02 | 显示全部楼层 |阅读模式 来自 广东省深圳市
测试是APP开发中一个重要的环节,在开发迭代中借助高效易用的测试工具来编写和执行自动化测试用例,并及时分析处理用例失败项;同时测试也是保障应用质量和提升开发效率的重要途径。然而,由于HarmonyOS应用具备一些独特性(例如能够实现应用的一次开发、多端部署,例如支持使用Java和JS两种语言进行开发和混合开发),因此,除了业界普遍的APP测试场景外,HarmonyOS应用的测试还需要解决下述几个问题:
1.“一次开发,多端部署”应用的测试
HarmonyOS APP支持”一次开发,多端部署”,即同一套代码可以针对不同的目标设备形态编译打包出对应的hap。那么,针对不同设备形态的hap,应该怎么进行测试呢?
2.  混合语言应用的测试
HarmonyOS APP支持使用多语言(Java、JS等)混合开发且语言互通。那么,开发者应该如何测试多语言开发的APP呢?

一、测试框架机制介绍
1、编译打包/运行机制
根据HarmonyOS应用框架定义,一个HarmonyOS APP由一个entry-hap模块和若干feature-hap模块构成。根据HarmonyOS应用程序框架的多hap机制,开发者可借助编译打包工具将“单元测试测试框架+测试代码”打包为一个feature-hap,在打包过程中采用provided依赖模式关联目标APP代码(可为entry-hap或者feature-hap)。运行态下,测试hap(test.hap)与目标hap(app.hap)被应用程序框架共进程加载运行。
而测试用例通过接口调用来完成对目标代码和APP组件的控制、触发和查询,从而实现测试逻辑。
1.jpg

2、测试代码的分离打包和共进程运行机制
AbilityDelegator为元能力子系统提供的测试支持能力,用于控制Ability的生命周期,获取Ability对象状态,注入点击事件等。使用AbilityDelegator可以提升HJUnit测试用例的开发效率和稳定性。
获取测试APP进程AbilityDelegator实例的方法:
AbilityDelegatorRegistry.getAbilityDelegator()
序号方法名功能
1getAppContext获取HarmonyOS应用Context
2runOnUIThreadSync在UI线程执行任务
3startAbilitySync启动Ability并返回Ability对象(只支持启动本地Page类型Ability)
4stOPAbility销毁Ability对象
5getCurrentTopAbility获取本地Top Ability对象
6getCurrentAbilitySlice获取本地当前AbilitySlice对象
7trigger[Click/Key/Touch]Event模拟点击/按键/触摸事件



二、“一次开发,多端部署”应用的测试
针对“一次开发,多端部署”应用的测试,测试代码的编译打包功能内置于HarmonyOS APP编译打包工具链中,自动继承”一次开发,多端部署”特性,即同一套测试代码可被编译打包出与目标代码一致的针对多形态设备的hap包(目标设备形态在APP工程下的config.json中通过deviceType字段配置)。单元测试测试框架在运行时将自动识别当前设备形态并安装运行相应的hap。
一套测试代码同时编译出多种产品形态的测试hap如图2所示:
2.jpg


更多详细内容请下载附件查看
游客,如果您要查看本帖隐藏内容请回复
已绑定手机
发表于 2021-7-23 21:15:34 | 显示全部楼层 来自 湖南省长沙市
谢谢分享!
已绑定手机
发表于 2021-7-25 03:04:59 | 显示全部楼层 来自 四川省成都市
感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表