鸿蒙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

### Hypium 方法的使用说明 Hypium 是一种用于自动化生成多测试用例框架的技术,其核心理念在于简化开发者的操作流程,减少手动配置的工作量。当创建新文件时,选择 **Hypium TestSuite** 可以自动生成适用于多测试用例运行环境的模板文件[^2]。 以下是关于 Hypium 的具体文档和示例: #### 创建 Hypium 测试套件 为了快速构建一个多测试用例项目,在新建文件的过程中可以选择预定义的选项——即 **Hypium TestSuite**。这一过程会自动完成必要的初始化工作,包括但不限于设置基础结构、引入依赖库以及提供默认实现逻辑。 #### 示例代码展示 下面是一个简单的 Hypium 多测试用例脚本的例子: ```python import unittest class MyTestSuite(unittest.TestCase): def test_case_1(self): self.assertEqual(1, 1) def test_case_2(self): self.assertTrue(True) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(MyTestSuite) runner = unittest.TextTestRunner() result = runner.run(suite) ``` 此段代码展示了如何利用 Python 中 `unittest` 模块来模拟 Hypium 自动化生成的效果。虽然实际使用的语言可能不同,但基本思路一致:通过加载多个独立的测试案例到统一管理器中,并最终执行它们。 #### 性能优化建议 如果希望进一步提升基于 Hypium 构建的应用性能,则可以借助外部工具如 perf 进行深入剖析。例如采用命令 `perf record ./your_application && perf report` 来记录程序运行期间的关键指标数据,从而识别潜在瓶颈所在位置[^3]。 #### 鸿蒙环境下集成 DevEco Testing 工具 针对鸿蒙系统的特殊需求,推荐配合官方提供的 DevEco Testing 工具一起使用。该工具有助于增强整个开发生命周期内的调试体验,比如方便快捷地部署应用程序至目标硬件上或者收集实时日志信息等实用特性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值