目录

1. 双向预览功能

2.Java UI 数据模拟

3. 新增的测试框架


鸿蒙(HarmonyOS)最新版的IDE Beta3于2021-03-31日发布,beta3增加了很多吸引人的功能,这些功能有一些与编程有关,有一些与配置、模板有关。本文主要深入介绍与编程有关的3个特性:双向预览、Java UI数据模拟和测试框架,至于其他的一些新特性,如更多的phone模板,API version的变化,可视化配置config.json等,可以参考我下面的视频。

【鸿蒙学院】特大喜讯,宇宙最强鸿蒙(HarmonyOS)IDE Beta3发布,新特性抢先体验(这不是愚人节礼物)

1. 双向预览功能

预览器增加了双向预览功能,所谓双向预览,针对的是布局。修改布局文件的代码,会立刻在预览器中显示布局的效果,而通过点击布局效果中的组件,会自动定位到布局中的特定代码。

现在让我来演示一下,首先创建一个HarmonyOS工程,然后打开自动生成的布局文件,多输入一些布局代码,如下所示。

然后启动右侧的预览器,效果如下:

可以看到,布局文件的效果直接体现在了预览器上。不过目前仍然是单向预览。

点击预览器右上角两个T的按钮,在右侧会显示组件树视图,下面是当前选中组件的属性列表,可以直接修改属性的值。当选中组件树或预览器中的组件时,布局代码就会自动定位到对应的组件,如下所示。

不过目前并不是所有情况都支持同步,有如下情况目前还无法同步:

(1) hml布局代码里使用了数据绑定的属性

(2)xml布局代码里使用了资源引用的属性

(3)UI界面设置了动画效果

2.Java UI 数据模拟

这个功能相当有趣,其实核心理念就是见什么人说什么话。在应用发布时,执行的是真正的业务逻辑代码,数据也是真实的。但在调试时,有时用真实的数据测试太费劲,这些真实的数据可能难以获得,或获取很麻烦,或者数据量很大,反正,就是各种不爽。

我们期望在应用发布时使用真实的数据,而在调试时,使用测试数据,关键一点是,不用修改任何代码,根据调试或发布的场景自动切换。这就是Java UI数据模拟的核心作用。其实这个功能的理念与我10年前做的一个实验性项目类似,这是一个模拟NFC的系统,支持Android。在开发时,使用模拟的NFC Tag和模拟的移动设备进行测试,只需要将NFC Tag拖动到模拟设备上,就相当于真实环境中的NFC Tag与手机接触。然后将App发布到真机上时,系统会自动探测当前运行环境,如果是真机,那么就会自动切换到使用真正的NFC芯片读写NFC Tag,这一过程是完全透明,不需要修改一行代码就可以自动切换,如下所示。

对这个系统感兴趣的同学可以看这篇文章:https://unitymarvel.blog.csdn.net/article/details/17339705

鸿蒙的Java UI数据模拟也类似,这个功能是为Java UI模拟数据的。由一系列API组成,不过这些API默认并没有包含在鸿蒙SDK中,需要在模块的build.gradle中添加如下依赖:

dependencies {... ...implementation group:'com.huawei.deveco',name:'previewer-mock-core',version:'1.0.0.1'
}

运行程序,会先下载这个依赖。然后创建数据模拟类,代码如下:

package com.unitymarvel.harmonyos.games.sosgame.mock;
import com.huawei.asm.core.PreviewerMock;
import com.huawei.asm.core.annotation.PreviewerMockMethod;
import com.unitymarvel.harmonyos.games.sosgame.slice.MainAbilitySlice;
import ohos.aafwk.content.Intent;
public class MockClassTest extends PreviewerMock {@PreviewerMockMethodpublic void onStart(MainAbilitySlice slice, Intent intent) {intent.setParam("name", "Bill");intent.setParam("age", 20);slice.onStart(intent);}
}

这里用onStart方法拦截了Slice的onStart方法,相当于AOP的切片。在onStart方法中调用了Slice的onStart方法。如果这里不调用,那么Slice中的onStart方法是不会调用的(会显示黑屏)。在onStart方法中设置了模拟数据(name和age)。也就是说,Java UI数据模拟,其实借鉴了AOP的部分概念。

然后在Slice的onStart方法中可以使用下面的代码使用数据。这里的代码其实并不能感知用到的数据是模拟数据,还是真实的数据。

public void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);Text text = (Text)findComponentById(ResourceTable.Id_text_helloworld);text.setText("姓名:" + intent.getStringParam("name"));Text text1 = (Text)findComponentById(ResourceTable.Id_text_helloworld1);text1.setText("年龄:" + intent.getIntParam("age",0));}

现在不要运行,因为运行就使用正式的数据了,现在切换到Slice类,然后打开预览器,会看到如下所示的效果。

是不是两个Text组件的内容都变了。在预览器中可以使用模拟数据检查Slice中的代码是否正确,当然,Page Ability也可以使用这个功能。

3. 新增的测试框架

创建HarmonyOS工程,会发现多了一个ohosTest,这是新增的测试框架的目录,可以利用测试框架编写测试代码,让我们可以用TDD的方式开发程序。也就是在写程序之前,先为App设定一个边界,只要App中的相关数据越雷池一步,测试框架就会检测出来。

在开发阶段,开发者可借助由Java测试框架提供的IAbilityDelegator,进行APP组件操控测试(如:启动/关闭FA、获取界面UI元素、注入UI点击事件等),及时发现UI交互问题。或使用JUnit 4语法范式,编写测试用例、调用系统接口,获得API返回值或触发业务流程,根据接口返回值或业务状态,判断业务逻辑的正确性。

下面给出一个例子,打开ExampleOhosTest.Java文件,会看到如下代码:

这是系统自动生成的测试用例代码,用来测试BundleName,如果BundleName不是我们期望的,在测试时就会报错。现在点击testBundleName方法前面的绿色箭头,会看到如下所示的菜单:

点击Run 'testBundleName()'菜单项开始测试,如果发生错误,在下方的Run视图会输出如下内容。

这时就会发现代码中的错误,以便及时修改。如果某个人不小心修改了BundleName,测试是不会通过的。

【鸿蒙学院】鸿蒙(HarmonyOS)IDE迎来重大更新,新特性足以让你尖叫!相关推荐

  1. 华为emui11何时升鸿蒙,华为EMUI11迎来重大更新!23款机型可升级:加入鸿蒙特性...

    [10月26日讯]导语:在华为Mate40.iPhone 12这两款手机正式发布后,也顺利成为了当下最热门机型,尤其是华为Mate 40系列手机各项指标升级,相对于iPhone 12系列各种减配阉割, ...

  2. 鸿蒙系统hifi,Apple Music将迎来重大更新 HiFi无损音质即将上线?

    原标题:Apple Music将迎来重大更新 HiFi无损音质即将上线? 前不久有媒体报道称,苹果将在当地时间5月18日推出HiFi版AppleMusic服务,新服务将为Apple Music用户提供 ...

  3. 鸿蒙正式推送时间,鸿蒙系统现已正式推送,更新名单也随之出炉,包括荣耀手机!...

    随着鸿蒙系统的正式发布,已经让其口碑得到了大幅度的回升,基本上没有用户吐槽鸿蒙系统是套壳安卓系统,也没有用户说鸿蒙系统只是"花拳绣腿". 其实,笔者还记得2017年,华为宣布鸿蒙内 ...

  4. 【鸿蒙操作系统刷机教程】你知道安卓(小米,红米,一加,OPPO,vivo,荣耀,魅族手机)怎么刷华为鸿蒙操作系统(HarmonyOS)刷机包吗?

    内容将在审核通过后自动发布 特别提醒:刷机前务必先查看 1.系统全量包升级不会改变系统设置, 不会删除图库,不会丢失各类App的设置以及数据! 2.请一定注意在升级过程中不要断电,不要操作手机! 3. ...

  5. 华为鸿蒙去哪里更新,华为鸿蒙OS正式尝鲜版名单更新,升级?还是不升级?

    原标题:华为鸿蒙OS正式尝鲜版名单更新,升级?还是不升级? 请点击[关注],获取更多数码资讯 华为鸿蒙系统正式版本已经开始推送,公测尝鲜版与正式尝鲜版机型名单已经更新:"Mate40系列.M ...

  6. 鸿蒙系统概述(HarmonyOS)学习这一篇就够了!

    鸿蒙系统概述(HarmonyOS) 我们可以从以下三个主要方面进行概述:系统定义.技术特征.系统安全. 目录 鸿蒙系统概述(HarmonyOS) 系统定义 系统定位 技术架构 内核层 系统服务层 框架 ...

  7. 鸿蒙系统(HarmonyOS)应用开发入门篇

    鸿蒙系统(HarmonyOS)是基于微内核的全场景分布式OS,鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架,鸿蒙OS底层由鸿蒙微 ...

  8. 鸿蒙系统(HarmonyOS)--第一章

    · 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 第1节: 鸿蒙系统(HarmonyOS)概述 第2节:鸿蒙系统核心技术特色及架构技术 第3节:鸿蒙开发环境构建及应用开发 ...

  9. 华为HarmonyOS 鸿蒙,华为鸿蒙OS系统规划曝光,原来国产自主研发系统已经如此强大...

    原标题:华为鸿蒙OS系统规划曝光,原来国产自主研发系统已经如此强大 华为自主研发系统华为鸿蒙OS系统从2019年就发布了,但是很多小伙伴疑惑为啥华为鸿蒙OS系统吹那么响亮,却不应用到手机上呢,其实之前 ...

最新文章

  1. 自研Spring容器,带你解析ioc内部原理
  2. amd and nvidia gop_抱紧台积电的大腿就是好,AMD不仅CPU领先,显卡也逆袭有望
  3. Mirantis OpenStack fuel web 安装 使用
  4. 产品经理经验谈100篇(二)-数据分析应用,如何构建指标体系?
  5. 面向对象编程的两顶帽子
  6. Android高手的六大境界
  7. Gnome即将满18岁,适用于Docker,Kali Linux 2.0的新工具以及更多新闻
  8. ES11新特性_String.prototype.matchAll方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记063
  9. Java-虚拟机-栈帧
  10. 思必驰AI芯片发布:内置完整语音交互方案,支持离线模式,All in One
  11. 服务端设置忽略更新_深入理解Kafka服务端之日志对象的读写数据流程
  12. 结对编程-黄金点游戏之旅[二]
  13. 卖出平仓是什么意思​?
  14. 【推荐】阿里云主机accesskey利用工具
  15. python学习笔记(七) os模块与窗体控制
  16. cannot import name ‘mean_squared_erro‘ from ‘sklearn.metrics‘
  17. G.1用python进行精细中文分句(基于正则表达式),HarvestText:文本挖掘和预处理工具
  18. HTML简易会员登录页面
  19. 大型、超大型数据中心园区设计如何审查与优化
  20. 如何在Pycharm中安装 pygame?

热门文章

  1. xbox one x驱动_如何在Windows,OS X和Linux上使用Xbox One控制器
  2. win10任务栏怎么还原到下面_Win10如何快速显示桌面?
  3. 计算机地图制图期末考试题,计算机地图制图原理思考题.doc
  4. 聚观早报 | 明年起手机预装APP均可卸载;爱奇艺VIP会员再次涨价
  5. 【html5基础学习速成】
  6. 读书百客:《感遇·江南有丹橘》赏析
  7. 无奈的我,无奈的C++ Builder
  8. 计算机or笔记本,笔记本or台式机 这几款戴尔主机性能上没得挑
  9. 计算机u盘设备无法启动不了,系统提示“该设备无法启动(代码:10)”,USB设备不能开始工作怎么办?...
  10. python图片转文字