# Testing(测试) 测试框架:`@ohos/hypium`(断言 + 用例组织),`@ohos/hamock`(mock)。已在 `oh-package.json5` 声明。 ## 两类测试 Two Test Kinds | 类型 Kind | 目录 Dir | 说明 Notes | |----------|---------|-----------| | 本地单元测试 Local unit | `entry/src/test/` | 不依赖设备,跑纯逻辑(viewmodel/data/model 等) | | 设备集成测试 Device test | `entry/src/ohosTest/` | 依赖真机/模拟器,跑 Ability/UI/系统能力 | 已有示例文件:`LocalUnit.test.ets`、`List.test.ets`(单测);`Ability.test.ets`、`List.test.ets`(设备测试)。 ## 写法(hypium 语法) ```typescript import { describe, it, expect } from '@ohos/hypium'; export default function exampleTest() { describe('UserRepository', () => { it('should_return_trimmed_name', 0, () => { expect(formatName(' alice ')).assertEqual('alice'); }); }); } ``` - 用例名用 `should_xxx` 描述预期行为。 - **测试即规格(test as spec)**:测试描述的是"应该发生什么",agent 读测试即可理解预期行为。 ## 运行 Run - **DevEco Studio**:右键 `test/` 或 `ohosTest/` 目录 → Run Tests(推荐,主路径)。 - 命令行(hvigor): - 本地单测:`hvigorw test` 相关 task - 设备测试:`hvigorw test`(需连接设备/模拟器) ## 约定 Conventions - 每个 `viewmodel/`、`data/repository/`、`model/` 的新逻辑都要有对应的本地单测。 - 涉及 UI/系统能力/Ability 生命周期 → 设备测试(`ohosTest/`)。 - mock 用 `@ohos/hamock`,不要为了测试改生产代码结构。 - 改动后至少跑受影响的测试再提交。