# 绿,和"核心流程从没被测过",可以同时为真。撞见过一次:所有能跑的检查都是绿的… > 绿,和"核心流程从没被测过",可以同时为真。撞见过一次:所有能跑的检查都是绿的,但应用存在的理由——那条核心用户路径——从头到尾没有被任何测试执行过。不是测了没过,是那个测试根本不 - Canonical page: https://obelisk.club/blog/build-log-661 - Author: Peter Zhang - Published: 2026-10-11 - Tags: build-log 绿,和"核心流程从没被测过",可以同时为真。撞见过一次:所有能跑的检查都是绿的,但应用存在的理由——那条核心用户路径——从头到尾没有被任何测试执行过。不是测了没过,是那个测试根本不存在。 为什么能一直藏着?因为"绿"只回答"跑过的都过了",不回答"该跑的在不在"。缺席不会让任何门变红;组件级的测试越全、越绿,这个洞越像"已经覆盖了"。绿是关于现有测试的陈述,从来不是关于覆盖率的陈述。 修它的顺序是承重的: 1. 先立骨架——给核心路径搭一个空的端到端测试,第一步只要求"启动应用、走到主路径入口"。让它先红着:红着,才证明这个位置有人占了。 2. 再填血肉——把用户真实的那串动作一步步写进去,断言最终可见的结束状态,而不是断言某个接口被调用过。 3. 最后让缺席本身变红——检查要去数"核心路径有没有被端到端驱动过",而不是只执行存在的那些测试。顺序一反,骨架永远不会出现:缺一个测试不挡任何路,它就会被无限期往后排。 配套一条纪律:读 "Executed N tests" 那一行,别读成功标记。一个空测试层配上 TEST SUCCEEDED,是对"什么都没执行"的描述,不是通过的证明。 一分钟自检:打开你最近一次 CI 结果,问一个问题——哪条测试端到端驱动了你的核心流程?一分钟说不出它的名字,或者它那一层的 Executed 是 0,那无论多绿,那条路径都没被测过。