Bun 的测试运行器现在支持内置代码覆盖率报告。这使得轻松查看测试覆盖了多少代码库,并找到当前测试不充分的区域变得容易。
启用覆盖率
bun:test
支持查看哪些代码行被测试覆盖。要使用此功能,请将 --coverage
传递给 CLI。它会将覆盖率报告打印到控制台
$ bun test --coverage
-------------|---------|---------|-------------------
File | % Funcs | % Lines | Uncovered Line #s
-------------|---------|---------|-------------------
All files | 38.89 | 42.11 |
index-0.ts | 33.33 | 36.84 | 10-15,19-24
index-1.ts | 33.33 | 36.84 | 10-15,19-24
index-10.ts | 33.33 | 36.84 | 10-15,19-24
index-2.ts | 33.33 | 36.84 | 10-15,19-24
index-3.ts | 33.33 | 36.84 | 10-15,19-24
index-4.ts | 33.33 | 36.84 | 10-15,19-24
index-5.ts | 33.33 | 36.84 | 10-15,19-24
index-6.ts | 33.33 | 36.84 | 10-15,19-24
index-7.ts | 33.33 | 36.84 | 10-15,19-24
index-8.ts | 33.33 | 36.84 | 10-15,19-24
index-9.ts | 33.33 | 36.84 | 10-15,19-24
index.ts | 100.00 | 100.00 |
-------------|---------|---------|-------------------
要始终默认启用覆盖率报告,请将以下行添加到 bunfig.toml
[test]
# always enable coverage
coverage = true
默认情况下,覆盖率报告将包括测试文件,并排除源代码映射。这通常是您想要的,但可以在 bunfig.toml
中进行其他配置。
[test]
coverageSkipTestFiles = true # default false
覆盖率阈值
可以在 bunfig.toml
中指定覆盖率阈值。如果您的测试套件未达到或超过此阈值,bun test
将退出,并带有非零退出代码以指示失败。
[test]
# to require 90% line-level and function-level coverage
coverageThreshold = 0.9
# to set different thresholds for lines and functions
coverageThreshold = { lines = 0.9, functions = 0.9 }
源代码映射
在内部,Bun 默认转换所有文件,因此 Bun 会自动生成一个内部源代码映射,该映射将原始源代码的行映射到 Bun 的内部表示。如果您出于任何原因想要禁用此功能,请将 test.coverageIgnoreSourcemaps
设置为 true
;除了高级用例之外,这很少是需要的。
[test]
coverageIgnoreSourcemaps = true # default false