开天辟地 HarmonyOS(鸿蒙) - 测试: 单元测试

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

开天辟地 HarmonyOS(鸿蒙) - 测试: 单元测试

示例如下:

pages\test\UnitTest.ets

/*
 * 单元测试
 * 参见 /entry/src/test/List.test.ets 和 /entry/src/test/UnitTest.test.ets 中的说明
 *
 * 创建测试用例的方式一(自动方式):
 * 在 DevEco Studio 中打开 ets 文件,然后右键,然后点击 Show Context Actions 之后,创建测试文件即可
 *
 * 创建测试用例的方式一(手动方式):
 * 1、在 /entry/src/test 目录中创建一个 .test.ets 测试文件,并写自定义的测试用例
 * 2、在 /entry/src/test/List.test.ets 文件的 testsuite 函数内调用你的 .test.ets 测试文件中的函数
 */

import { TitleBar } from '../TitleBar'

@Entry
@Component
struct UnitTest {

  @State message: string = ""

  build() {
    Column({space:10}) {
      TitleBar()
      Text(this.message)
    }
  }
}

\entry\src\test\List.test.ets

import UnitTestTest from './UnitTest.test'

export default function testsuite() {
  // 需要在此处调用你的 .test.ets 测试文件中的函数
  UnitTestTest()
}

\entry\src\test\UnitTest.test.ets

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
import { Helper } from '../main/ets/utils/Helper';

// 需要先在 /entry/src/test/List.test.ets 文件的 testsuite 函数内调用 UnitTestTest()
// 在本页面的 UnitTestTest() 名字上点击右键,然后点击右键菜单中的相关选项,就可以运行测试用例了
// 运行本例后的测试结果为:
// Test Results(失败)
// └── UnitTestTests(失败)
//     ├── MyTest1(成功)
//     │   ├── test1(成功)
//     │   └── test2(成功)
//     └── MyTest2(失败)
//         ├── test1(失败)
//         └── test2(成功)
export default function UnitTestTest() {
  // describe() - 定义测试用例组
  describe('MyTest1', () => {
    beforeAll(() => {
      // 组内所有测试用例执行前执行
    })
    beforeEach(() => {
      // 组内每个测试用例执行前执行
    })
    afterEach(() => {
      // 组内每个测试用例执行后执行
    })
    afterAll(() => {
      // 组内所有测试用例执行后执行
    })

    // it() - 定义测试用例
    // expect() - 测试指定的变量,返回一个 Assert 断言
    //   assertEqual() - 断言两个值是否相等
    //   not() - 获取结果相反的 Assert 断言
    //   注:还有好多其他方法,详见文档
    it('test1', 0, () => {
      let a = Helper.formatWithThousandSeparator(31_415_926)
      expect(a).assertEqual('31,415,926') // 断言 a 等于 '31,415,926'
    })

    it('test2', 0, () => {
      expect(1).not().assertEqual(2) // 断言 1 不等于 2
    })

  })

  describe('MyTest2', () => {
    beforeAll(() => { })
    beforeEach(() => { })
    afterEach(() => { })
    afterAll(() => { })

    it('test1', 0, () => {
      expect(1).assertEqual(2)
    })

    it('test2', 0, () => {
      expect(1).assertEqual(1)
    })
  })
}

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

posted @ 2025-06-13 13:33  webabcd  阅读(12)  评论(0)    收藏  举报