08.1
测试金字塔
大量快而廉价的单元测试打底,少量集成居中,更少但更慢的 UI 测试封顶。重心放单测,性价比最高。
测试目录
单测放 src/test,UI 测试放 src/ohosTest,用 Hypium 框架统一运行。
08.2
单元测试
用 Hypium 的 test 装饰器标注用例,expect 断言验证行为。
import { describe, it, expect } from '@ohos/hypium'
export default function cartTest() {
describe('Cart', () => {
it('add increases total', 0, () => {
const c = new Cart(); c.add(new Product('A', 10)); c.add(new Product('B', 5))
expect(c.total).assertEqual(15)
})
})
}08.3
测试替身
用接口与替身替换真实依赖(网络/数据库),让单测快而稳。测试时注入返回固定数据的实现。
08.4
数据层测试
对 Repository/持久化逻辑做测试,验证增删查与边界;可借助临时数据库隔离。
08.5
UI 测试
ohosTest 中驱动页面,验证组件存在与交互结果,覆盖关键用户路径。
UI 测试慢
需启动真机/模拟器,分钟级。只在 CI 跑核心链路,细节交给单测。
08.6
异步测试
用 Hypium 的异步用例(done 回调或 async)等待 Promise 完成再断言。
it('fetch ok', 0, async () => {
const u = await repo.fetchUser(42)
expect(u.id).assertEqual(42)
})08.7
调试
DevEco Studio 提供断点、日志(hilog)、布局检查与性能 profiler。先定位问题类型再选工具。
import { hilog } from '@kit.PerformanceAnalysisKit'
hilog.info(0x0000, 'tag', 'value=%{public}d', count)08.8
常见陷阱
多因触碰真实网络/数据库或启动完整环境。用替身替换外部依赖,把被测单元缩到纯逻辑。
依赖文案或动态 id 会让用例脆弱。给关键组件设稳定 id/accessibility,断言稳定属性。
08.9