开天辟地 HarmonyOS(鸿蒙) - 测试: 单元测试
开天辟地 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)
})
})
}