HarmonyOS Next UI測試入門
HarmonyOS Next提供的自動化測試框架arkxtest,支持JS/TS語言的單元測試框架(JsUnit)及UI測試框架(UiTest)。UiTest通過簡潔易用的API提供查找和操作界面控件能力,支持用户開發基於界面操作的自動化測試腳本。本文介紹HarmonyOS Next
UI自動化框架實現原理
HarmonyOS Next中UI測試框架主要功能包括:
UI測試腳本編寫
UI測試基於單元測試,UI測試腳本在單元測試腳本上增加了對UiTest接口。下面示例代碼是實現的場景是:在啓動的應用頁面上進行點擊操作,然後檢測當前頁面變化是否為預期變化。
-
編寫Index.ets頁面代碼, 作為被測示例demo。
@Entry @Component struct Index { @State message: string = 'Hello World' build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Text("Next") .fontSize(50) .margin({top:20}) .fontWeight(FontWeight.Bold) Text("after click") .fontSize(50) .margin({top:20}) .fontWeight(FontWeight.Bold) } .width('100%') } .height('100%') } } -
在ohosTest > ets > test文件夾下.test.ets文件中編寫具體測試代碼。
import { describe, it, expect } from '@ohos/hypium'; // 導入測試依賴kit import { abilityDelegatorRegistry, Driver, ON } from '@kit.TestKit'; import { UIAbility, Want } from '@kit.AbilityKit'; const delegator: abilityDelegatorRegistry.AbilityDelegator = abilityDelegatorRegistry.getAbilityDelegator() const bundleName = abilityDelegatorRegistry.getArguments().bundleName; function sleep(time: number) { return new Promise<void>((resolve: Function) => setTimeout(resolve, time)); } export default function abilityTest() { describe('ActsAbilityTest', () => { it('testUiExample',0, async (done: Function) => { console.info("uitest: TestUiExample begin"); //start tested ability const want: Want = { bundleName: bundleName, abilityName: 'EntryAbility' } await delegator.startAbility(want); await sleep(1000); //check top display ability const ability: UIAbility = await delegator.getCurrentTopAbility(); console.info("get top ability"); expect(ability.context.abilityInfo.name).assertEqual('EntryAbility'); //ui test code //init driver const driver = Driver.create(); await driver.delayMs(1000); //find button on text 'Next' const button = await driver.findComponent(ON.text('Next')); //click button await button.click(); await driver.delayMs(1000); //check text await driver.assertComponentExist(ON.text('after click')); await driver.pressBack(); done(); }) }) }
UI測試能力總結
一般來説,在UI測試中,不管是網頁還是Android還是iOS,實現的效果不外乎獲取控件、操作控件、模擬點擊、模擬觸摸,模擬雙擊、長按、滑動等,一般對應有具體API做對應操作。
HarmonyOS Next中@ohos.UiTest提供了以下能力:
- On:提供控件特徵描述能力,用於控件篩選匹配查找。
- Component:代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。
- Driver:入口類,提供控件匹配/查找,按鍵注入,座標點擊/滑動,截圖等能力。
- UiWindow:入口類,提供窗口屬性獲取,窗口拖動、調整窗口大小等能力。
- By(deprecated):提供控件特徵描述能力,用於控件篩選匹配查找。從API version 9開始不再維護,建議使用On。
- UiComponent(deprecated):代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。從API version 9開始不再維護,建議使用Component。
- UiDriver(deprecated):入口類,提供控件匹配/查找,按鍵注入,座標點擊/滑動,截圖等能力。從API version 9開始不再維護,建議使用Driver。
總結
本文介紹了HarmonyOS Next中UI自動化測試的能力,操作步驟等具體使用方式。