harness: initial project setup

This commit is contained in:
andy
2026-09-11 14:47:53 +08:00
commit 2dc02b44c7
42 changed files with 838 additions and 0 deletions

43
docs/testing.md Normal file
View File

@@ -0,0 +1,43 @@
# Testing(测试)
测试框架:`@ohos/hypium`(断言 + 用例组织),`@ohos/hamock`(mock)。已在 `oh-package.json5` 声明。
## 两类测试 Two Test Kinds
| 类型 Kind | 目录 Dir | 说明 Notes |
|----------|---------|-----------|
| 本地单元测试 Local unit | `entry/src/test/` | 不依赖设备,跑纯逻辑(service/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('UserService', () => {
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
- 每个 `service/`、`model/` 的新逻辑都要有对应的本地单测。
- 涉及 UI/系统能力/Ability 生命周期 → 设备测试(`ohosTest/`)。
- mock 用 `@ohos/hamock`,不要为了测试改生产代码结构。
- 改动后至少跑受影响的测试再提交。