Back to Blog
·1 min read

一个很容易被忽略的盲区:CI 全绿,但 App 存在的那条核心流程,从来没有被任…

一个很容易被忽略的盲区:CI 全绿,但 App 存在的那条核心流程,从来没有被任何测试跑过。 为什么看不见: 单元测试覆盖的是计算函数,编译通过证明代码能拼起来,UI 测试目标里只

一个很容易被忽略的盲区:CI 全绿,但 App 存在的那条核心流程,从来没有被任何测试跑过。

为什么看不见: 单元测试覆盖的是计算函数,编译通过证明代码能拼起来,UI 测试目标里只有演示和截图用的流程。每一项检查都是对"零件"的判断,而"缺少一个测试"本身不会产生任何红色信号。没有失败的东西,就没有人会注意到。

修复的顺序很重要: 1. 先搭脚手架:建一个最小的核心流程测试,只做启动并断言到达主界面。目的是先证明这个测试目标真的被执行了(看 Executed N tests 的 N,而不是看 SUCCEEDED)。 2. 再填真实流程:输入数据、触发主操作、断言结果界面上的值。 3. 最后让缺失本身变成失败:检查测试文件是否存在,不存在就拦截。

顺序不能反。如果先写断言、后确认 runner 会执行,你可能是在为一个什么都不跑的测试目标写代码,得到的绿色毫无意义。

一分钟自测:故意把主操作弄坏(让结果恒为 0,或注释掉按钮的处理逻辑),跑一遍测试。还是绿的?那么你的"全绿"并没有保护用户每天会走的那条路径。

#build-log

Written by

Peter Zhang

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