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

embedded/2024/9/22 7:49:02/

一 框架概述

单元测试框架(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.ppmy.cn/embedded/103016.html

相关文章

Python爬虫(一文通)

Python爬虫(基本篇) 一:静态页面爬取 Requests库的使用 1)基本概念安装基本代码格式 应用领域:适合处理**静态页面数据和简单的 HTTP 请求响应**。 Requests库的讲解 含义:requests 库是 Python 中一个…

Encoding.UTF8是.NET 中用于处理UTF-8编码的标准编码类

Encoding.UTF8 是 .NET 中用于处理 UTF-8 编码的标准编码类。UTF-8 是一种可变长度的字符编码方案,它可以表示所有 Unicode 字符,并且与 ASCII 兼容。Encoding.UTF8 是 System.Text.Encoding 类的一个静态属性,提供了对 UTF-8 编码和解码的支…

-[meetingbot4ios.AppDelegate window]: unrecognized selector sent to instance

这个错误的困扰了我半天,具体错误如下: *** Terminating app due to uncaught exception NSInvalidArgumentException, reason: -[meetingbot4ios.AppDelegate window]: unrecognized selector sent to instance 0x60000370c0c0 *** First throw call …

设计模式-结构型模式-组合模式

1.组合模式的定义 将对象组合成树形结构以表示整个部分的层次结构,组合模式可以让用户统一对待单个对象和对象的组合;其更像是一种数据结构和算法的抽象,其中数据可以表示成树这种数据结构,业务需求可以通过在树上的递归遍历算法来…

【问题解决】Jenkins的Pipeline无法正常后台启动Jar包

文章目录 问题描述排查Jenkins日志启动流水线观察Jar包启动情况初步推测问题问题原因:Jenkins进程管理机制问题解决:改写启动Jar包命令参考文章 问题描述 执行Jenkins的Pipeline,执行结果显示为成功,但是Java程序没有成功启动 排…

7z解压crc错误 7-Zip-常见问题解答

7-Zip 是一个流行的文件压缩和解压缩工具,但在使用过程中,有时会遇到 CRC(循环冗余校验)错误。这通常意味着压缩文件已损坏或未完全下载。以下是一些可能的原因及解决方案。 常见原因 文件损坏:下载过程中出现错误&a…

Shell脚本入门:多命令处理

我的后端学习大纲 我的Linux学习大纲 1.什么是多命令处理 1.多命令处理就是在Shell脚本文件中编写多个Shell命令 2.入门案例: 2.1.需求介绍: 1.在已知目录/root/itheima目录,执行batch.sh脚本,实现在/root/itheima/目录下创建一…