1 开始
1.1环境准备
? ? ? ? DevEco Studio IDE
1.2安装环境要求
? ? ? ? 在配置环境的时候请参考:搭建DevEco Studio环境介绍、DecEvo签名应用。
2.测试股框架概述
2.1测试框架概述
? ? ? ? HJSUnit测试框架支持使用javascript语言编写测试用例,对鸿蒙APP(特指基于ACE框架使用javascript语言开发的APP,包含轻量化鸿蒙APP以及双框架下的鸿蒙APP)进行自动化测试,测试框架的能力包括:
- 对页面逻辑层的API进行测试
- 对页面UI跳转逻辑进行测试
- 对js framework进行测试
2.2测试框架运行机制
? ? ? ? 框架支持的测试包为.hap,即用户在鸿蒙源码环境或者IDE下将测试代码编译打包成标准的hap包,然后在安装到设备上运行测试用例。测试用例的执行使用aa命令行工具,支持传入多种参数来实现用例的筛选,如执行单条用例、执行特定测试类型的用例等。
Positive:HJSUnit 测试命令行格式:hdc shell aa start -p${BUILDE_NAME} -n
ohos.testkit.runner.EntryAbility -s unittest ohos.testkit.runner.Runner
aa 命令将测试hap包拉起,并启动测试执行。测试框架、测试用例和被测对象共进程运行。runner还负责测试用例执行结果从应用进程回传到aa命令控制台并打印出来。
? ? ? ? 具体的执行流程参考:https://blog.csdn.net/nanzhanfei/article/details/119716039?spm=1001.2014.3001.5501
2.3测试框架执行流程
关键步骤描述:
- 启动index.js入口文件
- 新建核心core流程模块,创建核心服务,注册核心事件
- 初始化核心服务,将核心服务需要暴露出来的函数设置为全局函数,供测试用例使用
- 引用所有测试用例,将所有测试套和用例缓存到核心服务中
- 执行核心服务execute方法,循环嵌套执行所有的测试套和测试用例
- 标记测试用例执行开始和结束事件,开始和结束时发送event事件给核心流程,报告测试结果
- 报告服务获取用例执行开始和结束信息,生成报告,在控制台中打印执行结果
2.4工程结构图
? ? ? ? 1.首先在IDE里的导航栏点击build->Build Hap->Build Hap这里,将会编译出一个hap包
? ? ? ? ?2.编译出来的hap将会存放在
? ? ? ? ?3.程序将会进入到index.js ->List.unit.js->具体的用例
?3.用例语法
????????测试用例采用jasmine的标准语法,describe代表一个测试套,it代表一条用例,describe支持多层嵌套。
3.1语法说明:
- describe:定义一个测试套,支持两个参数:测试套名称和测试套函数;describe支持嵌套,每个describe内均可以定义beforeAll,beforeEach,afterEach和afterAll。
- beforeAll:在测试套内定义一个预置条件,在所有测试用例开始之前执行且只执行一次,支持一个参数:预置动作函数
- beforeEach:在测试套内定义一个单元预置条件,在每条测试用例开始前执行,执行次数与it定义的测试用例数一致,支持一个参数:清理动作函数
- afterAll:在测试套内定义一个清理条件,在所有的测试用例结束后执行且只执行一次,支持一个参数:清理动作函数
- it:定义一条测试用例,支持三个参数:用例名称,过滤参数和用例函数
- expect:支持bool类型判断等多种断言方法
3.2用例demo
import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index'
import systemparameter from '@ohos.systemParameter'
describe('SystemParameterTest', function () {
console.info('SystemParameterTest start################################start');
/**
* @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0100
* @tc.name testSet0100
* @tc.desc Set the value for the given key with parameter callback.
*/
it('system_parameter_test_0100', 0, async function (done) {
console.info('system_parameter_test_0100 start');
let ret = false;
try {
systemparameter.set('hw_sc.build.os.version', '10.20.30.4', function (date, err) {
if (err == undefined) {
ret = true;
console.info('system_parameter_test_0100 set callback hw_sc.build.os.version value success :'
+ data);
} else {
console.info('system_parameter_test_0100 set callback hw_sc.build.os.version value err:'
+ err.code);
}
});
done();
} catch (e) {
console.info('system_parameter_test_0100 set callback hw_sc.build.os.version unexpect err:' + e);
}
setTimeout(function(){
expect(ret).assertTrue();
}, '1000');
console.info('system_parameter_test_0100 : end');
})
}
4.测试常用断言表
????????
?
|