鴻蒙IDE迎來重大更新,新特性足以讓你尖叫
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
鴻蒙(HarmonyOS)最新版的IDE Beta3于2021-03-31日發(fā)布,beta3增加了很多吸引人的功能,這些功能有一些與編程有關(guān),有一些與配置、模板有關(guān)。本文主要深入介紹與編程有關(guān)的3個特性:雙向預(yù)覽、Java UI數(shù)據(jù)模擬和測試框架,至于其他的一些新特性,如更多的phone模板,API version的變化,可視化配置config.json等,可以參考我下面的視頻。
1. 雙向預(yù)覽功能
預(yù)覽器增加了雙向預(yù)覽功能,所謂雙向預(yù)覽,針對的是布局。修改布局文件的代碼,會立刻在預(yù)覽器中顯示布局的效果,而通過點擊布局效果中的組件,會自動定位到布局中的特定代碼。
現(xiàn)在讓我來演示一下,首先創(chuàng)建一個HarmonyOS工程,然后打開自動生成的布局文件,多輸入一些布局代碼,如下所示。
然后啟動右側(cè)的預(yù)覽器,效果如下:
可以看到,布局文件的效果直接體現(xiàn)在了預(yù)覽器上。不過目前仍然是單向預(yù)覽。
點擊預(yù)覽器右上角兩個T的按鈕,在右側(cè)會顯示組件樹視圖,下面是當(dāng)前選中組件的屬性列表,可以直接修改屬性的值。當(dāng)選中組件樹或預(yù)覽器中的組件時,布局代碼就會自動定位到對應(yīng)的組件,如下所示。
不過目前并不是所有情況都支持同步,有如下情況目前還無法同步:
(1) hml布局代碼里使用了數(shù)據(jù)綁定的屬性
(2)xml布局代碼里使用了資源引用的屬性
(3)UI界面設(shè)置了動畫效果
2.Java UI 數(shù)據(jù)模擬
這個功能相當(dāng)有趣,其實核心理念就是見什么人說什么話。在應(yīng)用發(fā)布時,執(zhí)行的是真正的業(yè)務(wù)邏輯代碼,數(shù)據(jù)也是真實的。但在調(diào)試時,有時用真實的數(shù)據(jù)測試太費勁,這些真實的數(shù)據(jù)可能難以獲得,或獲取很麻煩,或者數(shù)據(jù)量很大,反正,就是各種不爽。
我們期望在應(yīng)用發(fā)布時使用真實的數(shù)據(jù),而在調(diào)試時,使用測試數(shù)據(jù),關(guān)鍵一點是,不用修改任何代碼,根據(jù)調(diào)試或發(fā)布的場景自動切換。這就是Java UI數(shù)據(jù)模擬的核心作用。其實這個功能的理念與我10年前做的一個實驗性項目類似,這是一個模擬NFC的系統(tǒng),支持Android。在開發(fā)時,使用模擬的NFC Tag和模擬的移動設(shè)備進行測試,只需要將NFC Tag拖動到模擬設(shè)備上,就相當(dāng)于真實環(huán)境中的NFC Tag與手機接觸。然后將App發(fā)布到真機上時,系統(tǒng)會自動探測當(dāng)前運行環(huán)境,如果是真機,那么就會自動切換到使用真正的NFC芯片讀寫NFC Tag,這一過程是完全透明,不需要修改一行代碼就可以自動切換,如下所示。
鴻蒙的Java UI數(shù)據(jù)模擬也類似,這個功能是為Java UI模擬數(shù)據(jù)的。由一系列API組成,不過這些API默認并沒有包含在鴻蒙SDK中,需要在模塊的build.gradle中添加如下依賴:
運行程序,會先下載這個依賴。然后創(chuàng)建數(shù)據(jù)模擬類,代碼如下:
這里用onStart方法攔截了Slice的onStart方法,相當(dāng)于AOP的切片。在onStart方法中調(diào)用了Slice的onStart方法。如果這里不調(diào)用,那么Slice中的onStart方法是不會調(diào)用的(會顯示黑屏)。在onStart方法中設(shè)置了模擬數(shù)據(jù)(name和age)。也就是說,Java UI數(shù)據(jù)模擬,其實借鑒了AOP的部分概念。
然后在Slice的onStart方法中可以使用下面的代碼使用數(shù)據(jù)。這里的代碼其實并不能感知用到的數(shù)據(jù)是模擬數(shù)據(jù),還是真實的數(shù)據(jù)。
現(xiàn)在不要運行,因為運行就使用正式的數(shù)據(jù)了,現(xiàn)在切換到Slice類,然后打開預(yù)覽器,會看到如下所示的效果。
是不是兩個Text組件的內(nèi)容都變了。在預(yù)覽器中可以使用模擬數(shù)據(jù)檢查Slice中的代碼是否正確,當(dāng)然,Page Ability也可以使用這個功能。
3. 新增的測試框架
創(chuàng)建HarmonyOS工程,會發(fā)現(xiàn)多了一個ohosTest,這是新增的測試框架的目錄,可以利用測試框架編寫測試代碼,讓我們可以用TDD的方式開發(fā)程序。也就是在寫程序之前,先為App設(shè)定一個邊界,只要App中的相關(guān)數(shù)據(jù)越雷池一步,測試框架就會檢測出來。
在開發(fā)階段,開發(fā)者可借助由Java測試框架提供的IAbilityDelegator,進行APP組件操控測試(如:啟動/關(guān)閉FA、獲取界面UI元素、注入UI點擊事件等),及時發(fā)現(xiàn)UI交互問題?;蚴褂肑Unit 4語法范式,編寫測試用例、調(diào)用系統(tǒng)接口,獲得API返回值或觸發(fā)業(yè)務(wù)流程,根據(jù)接口返回值或業(yè)務(wù)狀態(tài),判斷業(yè)務(wù)邏輯的正確性。
下面給出一個例子,打開ExampleOhosTest.Java文件,會看到如下代碼:
這是系統(tǒng)自動生成的測試用例代碼,用來測試BundleName,如果BundleName不是我們期望的,在測試時就會報錯?,F(xiàn)在點擊testBundleName方法前面的綠色箭頭,會看到如下所示的菜單:
點擊Run 'testBundleName()'菜單項開始測試,如果發(fā)生錯誤,在下方的Run視圖會輸出如下內(nèi)容。
這時就會發(fā)現(xiàn)代碼中的錯誤,以便及時修改。如果某個人不小心修改了BundleName,測試是不會通過的。
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)