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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值