当前位置:   article > 正文

HJSUnit测试框架

hjsunit

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命令控制台并打印出来。

        具体的执行流程参考:OpenHarmony-L2操作总结_@_南先生的博客-CSDN博客

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

  1. import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index'
  2. import systemparameter from '@ohos.systemParameter'
  3. describe('SystemParameterTest', function () {
  4. console.info('SystemParameterTest start################################start');
  5. /**
  6. * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0100
  7. * @tc.name testSet0100
  8. * @tc.desc Set the value for the given key with parameter callback.
  9. */
  10. it('system_parameter_test_0100', 0, async function (done) {
  11. console.info('system_parameter_test_0100 start');
  12. let ret = false;
  13. try {
  14. systemparameter.set('hw_sc.build.os.version', '10.20.30.4', function (date, err) {
  15. if (err == undefined) {
  16. ret = true;
  17. console.info('system_parameter_test_0100 set callback hw_sc.build.os.version value success :'
  18. + data);
  19. } else {
  20. console.info('system_parameter_test_0100 set callback hw_sc.build.os.version value err:'
  21. + err.code);
  22. }
  23. });
  24. done();
  25. } catch (e) {
  26. console.info('system_parameter_test_0100 set callback hw_sc.build.os.version unexpect err:' + e);
  27. }
  28. setTimeout(function(){
  29. expect(ret).assertTrue();
  30. }, '1000');
  31. console.info('system_parameter_test_0100 : end');
  32. })
  33. }

4.测试常用断言表

        

5.编写js用例的总结

        关于在编写js用例时所要用到的callback和promise的总结:JS的callback和promise的总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/302371
推荐阅读
相关标签
  

闽ICP备14008679号