鸿蒙开发手册HARMONYOS

CHAPTER 08质量保障 · TESTING

测试与调试

没有测试,重构就是赌博。本章覆盖 Hypium 单元/UI 测试、服务/数据层测试、DevEco 调试工具与日志分析。

开始阅读难度中级约2小时
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

常见陷阱

单测为什么慢?

多因触碰真实网络/数据库或启动完整环境。用替身替换外部依赖,把被测单元缩到纯逻辑。

UI 测试不稳定?

依赖文案或动态 id 会让用例脆弱。给关键组件设稳定 id/accessibility,断言稳定属性。

08.9

实战练习

延伸资源