分支覆盖率低说明部分条件判断的真假路径未被测试到,需通过html报告定位红色高亮的if/else/三元/逻辑运算符/switch行,逆向检查真假组合,关注隐性分支,并用debugger或console验证执行路径。

分支覆盖率低,说明代码里有些 条件判断的真假路径没被测试到。它不等于“用例写得少”,而更可能是“关键分支被跳过了”。要真正找出遗漏场景,得从代码结构出发,而不是靠堆测试用例。
看 HTML 报告里的红色高亮行
生成 Vitest 或 Jest 的 HTML 覆盖率报告(如 coverage/lcov-report/index.html)后,重点找标红的 if、else、三元表达式、逻辑运算符(&& ||)、switch case 所在行。这些位置通常显示为“部分覆盖”或“未覆盖”:
- if 语句只执行了 true 分支,false 分支是空心/灰色 → 缺少反向输入
- 三元表达式
a ? b() : c()只触发了b()→ 没传让a为假的值 - switch 中某个 case 完全没进 → 对应的值没在测试中出现过
逆向检查每个判定的真假组合
对函数里每一个条件判断,手动列出它可能的真假结果,再对照测试用例确认是否都覆盖到了:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
v-if="user && user.role === 'admin'":需分别测user=null、user={role: 'guest'}、user={role: 'admin'} -
props.disabled || isLoading:要覆盖false||false、true||false、false||true三种组合(true||true可选) - Promise 链中的
.catch:必须 mock 接口失败,不能只测 resolve 成功路径
特别关注容易被忽略的“隐性分支”
有些分支不是显式的 if,但一样影响执行流,常被漏测:
-
defineModel的双向绑定更新时机:赋值后是否触发了update:modelValue?有没有测undefined → string和string → null两种流向 - slot 默认内容渲染逻辑:当父组件没传 slot 时,组件内部 fallback 是否执行?是否写了对应断言
- 错误边界与 try/catch:比如
JSON.parse失败、new Date(invalid)返回 Invalid Date,这些异常路径需要主动构造
用调试方式验证执行路径
在疑似未覆盖的分支前加 debugger 或 console.log('hit here'),然后运行对应测试,看控制台是否输出或断点是否命中:
- 如果没触发,说明该分支确实没走 —— 立刻补输入数据
- 如果触发了但没进分支体,可能是条件写错(比如用了
=而非===),或是依赖状态没正确 setup - 注意异步代码:
await nextTick()后再检查 DOM 或响应式状态,否则可能误判










