鸿蒙Next 单元测试框架——hypium

一 框架概述

单元测试框架(hypium)是HarmonyOS上的测试框架,提供测试用例编写、执行、结果显示能力,用于测试系统或应用接口。

表1 单元测试框架功能特性
在这里插入图片描述

二 安装使用

目前hypium以npm包的形式发布, 因此需要在Deveco Studio 工程级package.json内配置

"dependencies": {"@ohos/hypium": "1.0.6" #最新版本号,可通过cmd命令"npm view @ohos/hypium version"查询
}

然后,在测试文件中引入

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'

三 使用说明

3.1 基础流程

测试用例采用业内通用语法,describe代表一个测试套, it代表一条用例。
表2 测试套&用例接口定义列表

在这里插入图片描述

3.2 断言库

判断变量或对象的期望值与实际值,是否满足相关条件,否则抛出异常。
表3 断言功能列表
在这里插入图片描述
在这里插入图片描述
示例代码:

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
export default function abilityTest() {describe('ActsAbilityTest', function () {it('assertContain',0, function () {let a = 'abc'let b = 'b'// Defines a variety of assertion methods, which are used to declare expected boolean conditions.expect(a).assertContain(b)expect(a).assertEqual(a)})})
}

3.3 Mock能力

约束限制
单元测试框架Mock能力hypium 1.0.1开始支持。
表4 mock能力接口列表
在这里插入图片描述
在这里插入图片描述
示例代码:

import {describe, expect, it, MockKit, when} from '@ohos/hypium';
export default function ActsAbilityTest() {describe('ActsAbilityTest', function () {it('testMockfunc', 0, function () {console.info("it1 begin");let mocker = new MockKit();class ClassName {constructor() {}method_1(arg) {return '888888';}method_2(arg) {return '999999';}}let claser = new ClassName();let mockfunc = mocker.mockFunc(claser, claser.method_1);when(mockfunc)('test').afterReturnNothing();expect(claser.method_1('test')).assertUndefined();});});
}

3.4 数据驱动

约束限制

单元测试框架数据驱动能力从hypium 1.0.2 版本开始支持

  • 数据参数传递 : 为指定测试套、测试用例传递测试输入数据参数。
  • 压力测试 : 为指定测试套、测试用例设置执行次数。

数据驱动可以根据配置参数来驱动测试用例的执行次数和每一次传入的参数,使用时依赖data.json配置文件,data.json与测试用例*.test.js|ets文件同目录,文件示例内容如下:

{"suites": [{"describe": ["actsAbilityTest"],"stress": 2,"params": {"suiteParams1": "suiteParams001","suiteParams2": "suiteParams002"},"items": [{"it": "testDataDriverAsync","stress": 2,"params": [{"name": "tom","value": 5},{"name": "jerry","value": 4}]},{"it": "testDataDriver","stress": 3}]}]
}

表5 配置参数说明
在这里插入图片描述
示例代码:
在TestAbility目录下app.js|ets文件中导入data.json,并在Hypium.hypiumTest() 方法执行前,设置参数数据

import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'
import { Hypium } from '@ohos/hypium'
import testsuite from '../test/List.test'
import data from '../test/data.json';
...
Hypium.setData(data);
Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite)
...import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium';
export default function abilityTest() {describe('actsAbilityTest', function () {it('testDataDriverAsync', 0, async function (done, data) {console.info('name: ' + data.name);console.info('value: ' + data.value);done();});it('testDataDriver', 0, function () {console.info('stress test');});});
}

四 执行测试脚本

DevEco Studio执行
通过点击按钮执行,当前支持以下执行方式
1、测试包级别执行,即执行测试包内的全部用例。
2、测试套级别执行,即执行describe方法中定义的全部测试用例。
3、测试方法级别执行,即执行指定it方法也就是单条测试用例。

在这里插入图片描述

查看测试结果
测试执行完毕后可直接在DevEco Studio中查看测试结果,如下图示例所示:
在这里插入图片描述

五 测试源码

https://gitee.com/harmonyos_samples/js-unit.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS-常用属性【看这一篇就够了】

目录 前言文章 常用属性 cursor鼠标样式 outline外轮廓 border与outline的区别 overflow超出部分隐藏 overflow属性值 overflow-x和overflow-y vertical-align属性 应用案例 常用的a标签布局按钮 水平居中的轮播图按钮 产品展示效果: 小米商城菜单 前…

【C#】属性的声明

在面向对象程序设计中,属性是访问对象存储数据的首选方式。 一般不要直接公开类的变量成员,即便是get访问器和set访问器并无数据访问规则。 属性的声明 1. 完整声明 在代码中输入propfull ,并连续按两下tab键 高亮的部分是可以修改的部分,按tab键可以…

FPGA上板项目(四)——FIFO测试

目录 实验内容实验原理FIFO IP 核时序绘制HDL 代码仿真综合实现上板测试 实验内容 理解 FIFO 原理调用 FIFO IP 核完成数据读写 实验原理 FIFO:First In First Out,先入先出式数据缓冲器,用来实现数据先入先出的读写方式。可分类为同步 FI…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍: 框架易于功能扩展,代码维护,方便二次开发,帮助开发者简单高效降低二次开发成本,满足专注业务深度开发的需求。 百度网盘下载 图片:

科研绘图系列:R语言多组极坐标图(grouped polar plot)

介绍 Polar plot(极坐标图)是一种二维图表,它使用极坐标系统来表示数据,而不是像笛卡尔坐标系(直角坐标系)那样使用x和y坐标。在极坐标图中,每个数据点由一个角度(极角)和一个半径(极径)来确定。角度通常从水平线(或图表的某个固定参考方向)开始测量,而半径则是…

【网络安全】服务基础第一阶段——第六节:Windows系统管理基础---- DNS部署与安全

计算机智能识别并用IP地址定位,例如我们想要访问一个网页,其实是只能使用这个网页的IP地址,即四位的0~255来访问,但这一串数字难以记忆,于是就有了DNS,将难以记忆的数字转化为容易记忆的域名&am…

合宙LuatOS产品规格书——Air700EAQ

Luat Air700EAQ是合宙的LTE Cat.1bis通信模块,采用移芯EC716E平台,支持LTE 3GPP Rel.13技术。 该模块专为满足小型化、低成本需求而设计,具备超小封装和极致成本优势。 Air700EAQ支持移动双模,内置丰富的网络协议,集…

基于AI大模型开发上层应用常见的技术栈

基于AI大模型的上层应用开发,技术栈要求通常包括以下几个方面: 编程语言:Python是AI领域的主要编程语言,具有大量的库和框架支持,是大模型开发的首选语言 。TypeScript也是不错的选择,很多模型对外提供类似…

Java使用POI创建带样式和公式的Excel文件

这篇文章将演示如何使用POI 创建带样式和公式的Excel文件。 代码 import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream; import java.io.IOException;public class ExcelDemo {public static void mai…

FPGA第 5 篇,FPGA技术优略势,FPGA学习方向,FPGA学习路线(FPGA专业知识的学习方向,FPGA现场可编程门阵列学习路线和方向)

前言 前几篇讲了一下FPGA的发展和应用,以及未来前景。具体详细,请看 FPGA发展和应用,以及未来前景https://blog.csdn.net/weixin_65793170/category_12665249.html 这里我们来,记录一下,FPGA专业知识的学习路线 一.…

Python(C++)自动微分导图

🎯要点 反向传播矢量化计算方式前向传递和后向传递计算方式图节点拓扑排序一阶二阶前向和伴随模式计算二元分类中生成系数高斯噪声和特征二元二次方程有向无环计算图超平面搜索前向梯度下降算法快速傅里叶变换材料应力和切线算子GPU CUDA 神经网络算术微分 Pytho…

C语言阴阳迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <Windows.h> enum WASD {W…

设计模式 -- 外观模式(Facade Pattern)

1 问题引出 组建一个家庭影院 DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能&#xff0c;其过程为&#xff1a; 直接用遥控器&#xff1a;统筹各设备开关 开爆米花机&#xff0c;放下屏幕 &#xff0c;开投影仪 &#xff0c;开音响&#xf…

图像金字塔的作用

1. 概述 图像金字塔是图像多尺度表达的一种&#xff0c;主要应用与图像分割&#xff0c;是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔实际上是一张图片在不同尺度下的集合&#xff0c;即原图的上采样和下采样集合。金字塔的底部是高分辨率图像&#xff0c;而…

C++学习/复习补充记录 --- 图论(深搜,广搜)

数据结构与算法 | 深搜&#xff08;DFS&#xff09;与广搜&#xff08;BFS&#xff09;_深搜广搜算法-CSDN博客 深度优先搜索理论基础 深搜和广搜的区别&#xff1a; &#xff08;通俗版&#xff09; dfs是可一个方向去搜&#xff0c;不到黄河不回头&#xff0c;直到遇到绝境了…

Netty 学习笔记

Java 网络编程 早期的 Java API 只支持由本地系统套接字库提供的所谓的阻塞函数&#xff0c;下面的代码展示了一个使用传统 Java API 的服务器代码的普通示例 // 创建一个 ServerSocket 用以监听指定端口上的连接请求 ServerSocket serverSocket new ServerSocket(5000); //…

android13 隐藏状态栏里面的飞行模式 隐藏蓝牙 隐藏网络

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码分析 4.代码修改 5.编译运行 6.彩蛋 1.前言 android13 隐藏状态栏里面的飞行模式,或者其他功能,如网络,蓝牙等等功能,隐藏下图中的一些图标。 2.问题分析 这里如果直接找这个布局的话,需要跟的逻…

nefu暑假acm集训1 构造矩阵 个人模板+例题汇总

前言&#xff1a; 以下都是nefu暑假集训的训练题&#xff0c;我在此把我的模板和写的一些练习题汇总一下并分享出来&#xff0c;希望在能满足我复习的情况下能帮助到你。 正文&#xff1a; 模板&#xff1a; #include<bits/stdc.h> using namespace std; typedef long…

Qt 学习第7天:Qt核心特性

元对象系统Meta-object system 来自AI生成&#xff1a; Qt中的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的一个核心特性&#xff0c;它为Qt提供了一种在运行时处理对象和类型信息的能力。元对象系统主要基于以下几个关键概念&#xff1a; 1. QObject&a…

Linux实现异步IO的方法:epoll,posix aio,libaio,io_uring

Linux中异步IO的实现方式大概有以下几种&#xff1a; 1. epoll 熟悉网络编程的人可能会想到select&#xff0c;poll&#xff0c;epoll这些异步IO的方式&#xff0c;但实际上这些方式叫做非阻塞IO&#xff0c;并不是实际意义上的异步IO。因此这些只能用于异步的Socket IO&…