Bun

代码覆盖率

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