# 绿色 CI 和「核心流程从没被跑过」可以同时成立。 一个很常见的盲区:单元测试全… > 绿色 CI 和「核心流程从没被跑过」可以同时成立。 一个很常见的盲区:单元测试全绿、构建全绿,但整个 App 存在的理由——用户打开后真正要完成的那条主流程——从来没有任何测试驱动 - Canonical page: https://obelisk.club/blog/build-log-522 - Author: Peter Zhang - Published: 2026-10-11 - Tags: build-log 绿色 CI 和「核心流程从没被跑过」可以同时成立。 一个很常见的盲区:单元测试全绿、构建全绿,但整个 App 存在的理由——用户打开后真正要完成的那条主流程——从来没有任何测试驱动过它。组件各自没问题,不代表产品能用。 为什么它会一直隐身: 门禁检查的是「测试通过了没有」,而不是「该有的测试存在没有」。没有测试文件,就没有失败的测试;没有失败,就没有红灯。一个空集合的通过率永远是 100%。同类的坑还有 `TEST SUCCEEDED` 配 `Executed 0 tests`——结论是关于「什么都没有」的结论。 修复的顺序很重要: 1. 先搭骨架:建好 UI 测试目标和一个能真正启动 App 的空壳用例,确保它能被构建、被发现、被执行(先看到 Executed 数 ≥ 1)。 2. 再填内容:把真实的主流程(导入 → 操作 → 得到结果)写进去,断言最终的可见结果,而不是中间调用了某个 API。 3. 最后加门禁:让「核心流程测试文件不存在」本身成为一个失败,而不是默认通过。 顺序不能反:先写断言再搭环境,你分不清失败是流程坏了还是脚手架没起来。 一分钟自测: • 说出你产品最重要的那一条用户路径,然后在测试目录里找到驱动它的那个用例。找不到,就是没覆盖。 • 故意把这条路径弄坏(比如让导出直接返回空),跑一遍测试套件。还是绿的?那你的绿色不代表什么。 • 看测试输出里的 Executed N tests——N 是多少,比「SUCCEEDED」更有信息量。