Back to Blog
·1 min read

一个很舒服的错觉:构建是绿的,单测是绿的,静态检查也是绿的——而这个 App 存…

一个很舒服的错觉:构建是绿的,单测是绿的,静态检查也是绿的——而这个 App 存在的意义所系的那条主流程,从头到尾一次都没有被执行过。 为什么它能藏这么久:缺席不产生任何信号。组件

一个很舒服的错觉:构建是绿的,单测是绿的,静态检查也是绿的——而这个 App 存在的意义所系的那条主流程,从头到尾一次都没有被执行过。

为什么它能藏这么久:缺席不产生任何信号。组件级的测试断言的是零件,没有一条断言旅程本身;零覆盖和全绿的看板完全兼容。绿色只证明"每一部分都能工作",从不证明"产品能工作"。

补这个洞,顺序是承重的:

1. 先用一句话写下核心流程:用户做什么、得到什么。写不出来,缺的是对产品的理解,不是测试。 2. 先立脚手架,再填内容。建一个空的 UI 测试,先确认它真的被执行了——看日志里 Executed N tests 那一行,N 大于 0——然后才填真实步骤。顺序反了,你分不清是测试写错了还是挂具坏了。 3. 填的是真实旅程:从冷启动一路走到核心动作完成,不是首屏冒烟。 4. 最后把它接进和其他检查同一条必经之路,让"缺失"变成一个明确的失败,而不是一片安静。

一分钟自检:打开最近一次完整测试的日志,找到 Executed N tests 那一行(不是成功标记),说出其中哪个测试端到端驱动了你的核心路径。说不出名字,你就有同一个洞。

#build-log

Written by

Peter Zhang

Building local-first Mac & iOS productivity apps at Obelisk Club.