未执行的代码行主因是测试未覆盖对应路径:分支条件被绕过、构造函数/生命周期钩子未调用、异步流程未等待、mock导致真实逻辑被截断。

未执行的代码行,说明测试用例根本没走到那里——不是逻辑错,而是“压根没进”。排查核心是搞清:为什么这段代码在测试中被跳过了?
看分支条件是否被绕过
最常见的原因是 if / else、switch、三元表达式或提前 return 的路径没被覆盖。比如:
- if (x > 0) { ... } else { ... }:只测了 x > 0 的情况,else 块就标为“未执行”;
- 函数开头有 guard clause:如 if (!this._inited) return; —— 若测试没触发初始化,整段后续逻辑都会灰掉;
- throw new Error() 被吞掉或没触发:错误分支没写对应测试,throw 后面的行自然不执行。
查构造函数和生命周期钩子是否被调用
很多“未执行行”藏在类初始化阶段:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 构造函数里参数校验、默认值赋值、内部状态设置等语句,如果测试用的是 mock 实例或直接 new 空对象,这些行就不会跑;
- React 类组件的 componentDidMount 或 Vue 的 created 钩子,若测试没挂载组件或用了 shallow render,相关逻辑也不会执行;
- 静态属性初始化、模块顶层代码(如 const utils = createHelper())——若测试文件没 import 对应模块,整块都不加载。
确认异步流程是否真正等待
async/await 或 Promise 链中的代码行,常因缺少 await 或 done() 而跳过:
- 写了 async test,但忘了 await 被测函数,导致后续 .then 或 await 后的语句根本没执行;
- 使用 setTimeout 或 requestAnimationFrame 的副作用逻辑,测试没用 jest.runAllTimers() 或 await flushPromises();
- 事件监听器注册后没触发事件,回调函数里的代码永远静默。
检查测试是否误用了 mock 或跳过了真实调用
过度 mock 容易让覆盖率“失真”:
- mock 了整个模块或方法,却没配置 mockImplementation,实际调用变成 undefined,后续行不执行;
- 用 jest.mock(‘xxx’) 自动 mock,但忘了手动恢复(jest.unmock),导致依赖模块逻辑被截断;
- 测试中直接 new Class(),但 Class 内部依赖的工具函数已被 mock 掉,初始化失败或提前退出。










