SuperAPI AI 工具集

bun-test-coverage

测试与质量

查看项目

更新于 10-15 15:11

技能介绍

Bun Test Coverage 是一套围绕 Bun 内置代码覆盖率能力的实践说明,无需额外依赖即可生成覆盖率报告。

用途 用于在 Bun 项目中开启测试覆盖率统计,并将结果接入持续集成流程,帮助发现未被测试覆盖的代码路径。

主要能力 开启覆盖率:使用 bun test --coverage;也可在 bunfig.toml 的 [test] 段中设置 coverage = true。 输出形式:默认在控制台以表格展示各文件的函数覆盖率、行覆盖率及未覆盖行号;支持通过 --coverage-reporter 指定 reporter,可选 text(默认控制台表格)、lcov(生成 coverage/lcov.info 供 CI 工具使用)、json(生成 coverage/coverage.json),并可用多个 --coverage-reporter 同时输出多种格式。 阈值控制:命令行使用 --coverage-threshold 指定最低覆盖率,低于阈值则失败;在 bunfig.toml 中可按指标分别设置,如 lines、functions、branches。 排除文件:通过 coverageSkipTestFiles = true 跳过测试文件,或使用 coverageIgnore 配置排除模式(如 /*.test.ts、/fixtures/、/mocks/**)。 输出目录:使用 --coverage-dir=./reports/coverage 自定义输出目录,bunfig.toml 中对应 coverageDir。 编程接口:可从 bun:test 引入 test、expect,并通过 Bun.coverage 获取覆盖率数据,例如在 process.on("exit") 中调用 coverage.getCoverageData()。

使用方式 在项目根目录运行 bun test --coverage 即可生成报告;需要 lcov 时添加 --coverage-reporter=lcov;需要强制门槛时添加 --coverage-threshold。长期配置写入 bunfig.toml。CI 中可结合 GitHub Actions 运行测试并上传 ./coverage/lcov.info 到 Codecov(示例使用 codecov/codecov-action@v5)。

常见错误 覆盖率阈值未达标:覆盖率低于设定阈值,需提高测试覆盖。 无覆盖率数据:文件未被执行,检查测试是否包含该文件。 lcov 未找到:缺少 reporter,添加 --coverage-reporter=lcov。

适用场景 适用于使用 Bun 作为测试运行器的 JavaScript/TypeScript 项目,在本地开发或 CI 流程中检查覆盖率、防止覆盖率回退,并可与 Codecov/Coveralls 等工具对接。

限制与建议 文档未提供价格、平台支持范围等细节。建议阈值从 60% 开始逐步提高,排除生成文件、mock 文件与类型定义,重点关注业务关键路径,并在 CI 中运行以避免覆盖率下降。需要自定义 reporter 配置或 CI/CD 集成细节时,可参考 references/reporters.md。