# 绿灯 CI 和「核心流程从未被执行过」可以同时成立,而且能持续很久 > 绿灯 CI 和「核心流程从未被执行过」可以同时成立,而且能持续很久。 原因很简单:单元测试验证的是零件,构建通过验证的是能编译,没有任何一层的职责是「把 App 存在的理由那条路径 - Canonical page: https://obelisk.club/blog/build-log-825 - Author: Peter Zhang - Published: 2026-10-11 - Tags: build-log 绿灯 CI 和「核心流程从未被执行过」可以同时成立,而且能持续很久。 原因很简单:单元测试验证的是零件,构建通过验证的是能编译,没有任何一层的职责是「把 App 存在的理由那条路径从头走一遍」。每个检查都对自己的范围诚实,合起来却留下一个没人负责的空洞。 我们的做法是加一道门:UI 测试目录里必须存在一个真正驱动核心流程的测试文件,缺了就直接失败,而不是默认通过。一个计算器类 App 的单元测试再多,只要没有一条「输入表达式、按等号、读结果」的端到端用例,它的核心路径就是未验证状态。 补救的顺序很重要: 1. 先搭骨架,让测试文件和 target 的声明与磁盘上的真实文件对得上(声明了 target 但目录是空的,生成项目时会直接报错); 2. 再填入真实的工作流,而不是留一个永远通过的空壳; 3. 最后确认它真的被执行了,看 Executed N tests 的数字,而不是只看 SUCCEEDED。 一分钟自检: - 列出你的 UI 测试目录,能否一句话说出哪个文件对应「用户来这个 App 要做的那件事」? - 临时把核心功能的实现改坏,测试会变红吗?不会,说明它保护的不是核心流程。 - 最近一次测试输出里,执行数是不是大于 0? 门禁最怕的不是红,而是一直绿、却什么都没测。