目錄
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 {
@PreviewerMockMethod
public 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,測驗是不會通過的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/271607.html
標籤:其他
上一篇:二本的我三戰面試官,從容應對HR,看我如何通過社招識訓今日頭條Java工程師Offer!
下一篇:動態記憶體管理
