当前位置: 首页 > 科技观察

HarmonyIDE迎来重大更新,新功能足以让你尖叫

时间:2023-03-11 22:28:14 科技观察

更多信息请访问:HarmonyOS技术社区https://harmonyos.51cto.comHarmonyOS(鸿蒙)最新版IDEBeta3已于2021-03-31发布。Beta3增加了许多吸引人的功能,其中一些与编程有关,一些与配置和模板有关。本文主要介绍三个与深度编程相关的特性:双向预览、JavaUI数据模拟和测试框架。至于其他新特性,比如更多手机模板,API版本变更,可视化配置config.json等,可以参考我下面的视频。视频演示1.双向预览功能预览器增加了双向预览功能。所谓双向预览,就是针对版面的。修改布局文件的代码会立即在预览器中显示布局效果,点击布局效果中的组件会自动定位到布局中的具体代码。下面我来演示一下,先创建鸿蒙工程,然后打开自动生成的布局文件,再输入一些布局代码,如下图。然后启动右侧的预览器,效果如下:可以看到布局文件的效果直接在预览器中体现出来了。但是,它仍然是一种单向预览。点击预览器右上角的两个T按钮,右侧会显示组件树视图。下面是当前选中组件的属性列表。您可以直接修改属性的值。当组件树或预览器中的组件被选中时,布局代码会自动定位到对应的组件,如下图。但是目前并不是所有的情况都支持同步,以下几种情况目前不能同步:(1)在hml布局代码中使用了数据绑定的属性(2)在xml布局代码中使用了资源引用的属性(3))UI界面动画效果设置。2.JavaUI数据模拟这个功能还是蛮有意思的。事实上,核心思想是与你遇到的任何人交谈。当应用发布时,执行的是真正的业务逻辑代码,数据也是真实的。但是在调试的时候,有时候用真实的数据去测试太费劲了。这些真实的数据可能很难获得,或者很难获得,或者数据量很大。反正就是各种不爽。我们期望在应用发布时使用真实数据,在调试时使用测试数据。关键是无需修改任何代码,会根据调试或发布场景自动切换。这就是JavaUI数据模拟的核心作用。其实这个功能的概念和我10年前做的一个实验项目差不多。这是一个模拟NFC,支持安卓的系统。在开发过程中,使用模拟的NFCTag和模拟的移动设备进行测试。你只需要将NFCTag拖拽到模拟设备上,相当于将真实环境中的NFCTag与手机接触。然后当App发布到真机时,系统会自动检测当前的运行环境。如果是真实设备,会自动切换到使用真实NFC芯片读写NFCTags。这个过程是完全透明的,不需要修改一行代码。可以自动切换,如下图。鸿蒙的JavaUI数据模拟类似,这个功能就是为JavaUI模拟数据。它由一系列API组成,但鸿蒙SDK默认不包含这些API。你需要在模块的build.gradle中添加如下依赖:运行程序,首先会下载这个依赖。然后创建一个数据模拟类,代码如下:这里通过onStart方法拦截Slice的onStart方法,相当于AOP的slice。在onStart方法中调用了Slice的onStart方法。如果这里不调用,则不会调用Slice中的onStart方法(会黑屏)。模拟数据(姓名和年龄)在onStart方法中设置。也就是说,JavaUI数据模拟其实借鉴了AOP的一些概念。然后在Slice的onStart方法中,您可以通过以下代码使用数据。这里的代码实际上并没有感知使用的数据是模拟数据还是真实数据。现在先不要跑,跑起来要用官方的数据。现在切换到Slice类,然后打开预览器,你会看到如下图的效果。两个Text组件的内容有变化吗?在预览器中,可以使用模拟数据来检查Slice中的代码是否正确。当然PageAbility也可以使用这个功能。3、新增的测试框架创建HarmonyOS工程,会发现多了一个ohosTest,这是新增测试框架的目录。你可以使用测试框架来编写测试代码,这样我们就可以在TDD中开发程序了。也就是说,在写程序之前,给App设置一个边界。只要App中的相关数据超出阈值一步,测试框架就会检测到。在开发阶段,开发者可以使用Java测试框架提供的IAbilityDelegator进行APP组件操作测试(如:启用/禁用FA、获取界面UI元素、注入UI点击事件等),发现UI交互问题及时。或者使用JUnit4语法范式编写测试用例,调用系统接口,获取API返回值或触发业务流程,根据接口返回值或业务状态判断业务逻辑的正确性。下面是一个例子,打开ExampleOhosTest.Java文件,你会看到如下代码:这是系统自动生成的测试用例代码,用于测试BundleName,如果BundleName不是我们预期的,运行时会报错考试。现在点击testBundleName方法前面的绿色箭头,你会看到如下菜单:点击Run'testBundleName()'菜单项开始测试。如果出现错误,下面的Run视图会输出如下内容。这个时候就会发现代码中的错误,以便及时改正。如果有人不小心修改了BundleName,测试将无法通过。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区