为什么要写测试

手测一遍点得过来的页面,靠人工就行。可一旦功能多了,每次改一处都要把全流程点一遍,费时还容易漏。自动化测试把验证写成代码,改完跑一遍就知道有没有改坏。

测试的真正价值不是证明代码没错,而是让你敢于重构。

这篇把鸿蒙的单元测试与 UI 测试走一遍。

测试金字塔

测试分三层:底层大量快而细的单元测试,中层少量集成测试,顶层少量慢而贵的端到端 UI 测试。越往下越多、越快、越便宜;越往上越少、越慢、越贵。

测试三层速查
  • 单元测试测一个函数或类,快。
  • 集成测试测模块间协作。
  • UI 测试驱动界面,慢而贵。

单元测试:测纯逻辑

把业务逻辑从界面里抽成纯函数或独立类,对它写断言。输入一组、断言一组预期结果。不碰界面、不碰系统,跑得快。

describe('cart', () => {
  it('合计随数量增加', () => {
    const c = new Cart()
    c.add(10); c.add(20)
    expect(c.total).assertEquals(30)
  })
})

Given 输入、When 动作、Then 断言,结构清楚。

UI 测试:驱动界面

UI 测试在模拟器或真机上启动应用,按坐标或组件描述找到按钮、点它、断言界面变了。它验证用户真实看到的流程,但跑得慢,只覆盖关键路径。

鸿蒙测试与质量保障:抽象设备前方悬浮放大镜与勾选标记、测试通过发光盾牌的蓝调插画
测试盾牌:用自动化把质量守住。