代码覆盖率通过插桩监控执行路径,判断代码执行情况;在语句、分支、函数处插入计数器,运行时收集数据并生成报告,帮助发现测试盲区。

JavaScript中的代码覆盖率检测,本质上是通过监控代码执行过程,判断哪些代码被执行过、哪些没有。它的核心目标是帮助开发者了解测试用例对源码的覆盖程度,从而发现未被测试到的逻辑分支或语句。
代码插桩:覆盖率的基础手段
覆盖率工具通常在代码运行前对其进行“插桩”(Instrumentation),也就是修改源码,在关键位置插入额外的计数逻辑。
- 每一条可执行语句前加入计数器,记录该语句是否被执行
- 函数调用、分支条件(如 if/else)、三元表达式等也会被标记,用于统计分支覆盖率
- 插桩后的代码功能不变,但能收集运行时的执行轨迹
function add(a, b) {
return a + b;
}
插桩后可能变成:
__cov['add.js'].s[1]++; // 语句计数
function add(a, b) {
__cov['add.js'].s[2]++;
return a + b;
}
运行时数据收集
当测试运行时,插桩代码会不断更新内部的覆盖率数据结构。这些数据通常包括:
- 语句覆盖率:每个可执行语句是否被执行
- 函数覆盖率:每个函数是否被调用
- 分支覆盖率:if、else、switch 等分支是否都走过
- 行覆盖率:源文件中每一行是否有代码执行
这些信息会被汇总成一个覆盖率对象,通常以 JSON 格式保存。
立即学习“Java免费学习笔记(深入)”;
结果生成与可视化
测试结束后,工具会将收集到的数据与原始源码进行映射,生成易于理解的报告。
- 高亮显示未执行的代码行(常用红色)
- 展示每个文件的覆盖率百分比
- 支持 HTML、终端、JSON 等多种输出格式
基本上就这些。代码覆盖率不是追求100%的数字游戏,而是帮助你发现测试盲区的有效手段。理解其原理,能让你更合理地使用它,而不是被它误导。










