- TypeScript 和 JSX
- 生命周期钩子
- 快照测试
- UI 和 DOM 测试
- 带
--watch的监视模式 - 带
--preload的脚本预加载
Bun 旨在与 Jest 兼容,但并非所有功能都已实现。要跟踪兼容性,请参阅 此跟踪
问题。
运行测试
terminal
*.test.{js|jsx|ts|tsx}*_test.{js|jsx|ts|tsx}*.spec.{js|jsx|ts|tsx}*_spec.{js|jsx|ts|tsx}
bun test 传递额外的位置参数来筛选要运行的 测试文件。任何路径与筛选器匹配的测试文件都将运行。通常,这些筛选器将是文件或目录名;glob 模式尚不支持。
terminal
-t/--test-name-pattern 标志。
terminal
./ 或 / 开头,以将其与筛选器名称区分开。
terminal
--preload 脚本(有关详细信息,请参见 生命周期),然后运行所有测试。如果测试失败,测试运行器将以非零退出代码退出。
CI/CD 集成
bun test 支持多种 CI/CD 集成。
GitHub Actions
bun test 自动检测是否在 GitHub Actions 中运行,并将 GitHub Actions 注释直接发送到控制台。
除了在工作流程中安装 bun 并运行 bun test 之外,无需其他配置。
如何在 GitHub Actions 工作流程中安装 bun
要在 GitHub Actions 工作流程中使用 bun test,请添加以下步骤:
.github/workflows/test.yml
JUnit XML 报告 (GitLab 等)
要将bun test 与 JUnit XML 报告器一起使用,您可以将 --reporter=junit 与 --reporter-outfile 结合使用。
terminal
超时
使用--timeout 标志指定以毫秒为单位的 每个测试 超时。如果测试超时,它将被标记为失败。默认值为 5000。
terminal
并发测试执行
默认情况下,Bun 在每个测试文件内按顺序运行所有测试。您可以启用并发执行以并行运行异步测试,显著加快具有独立测试的测试套件。--concurrent 标志
使用 --concurrent 标志在各自文件中并发运行所有测试:
terminal
test.serial,否则所有测试将并行运行。
--max-concurrency 标志
使用 --max-concurrency 标志控制同时运行的最大测试数:
terminal
test.concurrent
标记单个测试以并发运行,即使未使用 --concurrent 标志:
test.serial
强制测试按顺序运行,即使启用了 --concurrent 标志:
重新运行测试
使用--rerun-each 标志多次运行每个测试。这对于检测不稳定或不确定的测试失败很有用。
terminal
随机化测试执行顺序
使用--randomize 标志以随机顺序运行测试。这有助于检测依赖于共享状态或执行顺序的测试。
terminal
--randomize 时,用于随机化的种子将在测试摘要中显示:
terminal
使用 --seed 的可重现随机顺序
使用 --seed 标志为随机化指定种子。这允许您在调试顺序相关故障时重现相同的测试顺序。
terminal
--seed 标志意味着 --randomize,因此您无需同时指定两者。使用相同的种子值将始终产生相同的测试执行顺序,从而更容易调试由测试相互依赖引起的间歇性故障。
使用 --bail 退出
使用 --bail 标志在预定数量的测试失败后提前中止测试运行。默认情况下,Bun 将运行所有测试并报告所有失败,但在某些 CI 环境中,最好提前终止以减少 CPU 使用量。
terminal
监视模式
类似于bun run,您可以向 bun test 传递 --watch 标志以监视更改并重新运行测试。
terminal
生命周期钩子
Bun 支持以下生命周期钩子:| 钩子 | 描述 |
|---|---|
beforeAll | 在所有测试之前运行一次。 |
beforeEach | 在每个测试之前运行。 |
afterEach | 在每个测试之后运行。 |
afterAll | 在所有测试之后运行一次。 |
--preload 标志预加载的单独文件中定义。
terminal
模拟
使用mock 函数创建模拟函数。
jest.fn(),它的行为相同。
快照测试
bun test 支持快照。
--update-snapshots 标志。
terminal
UI 和 DOM 测试
Bun 与流行的 UI 测试库兼容: 有关完整文档,请参阅 测试 > DOM 测试。性能
Bun 的测试运行器很快。
AI 代理集成
将 Bun 的测试运行器与 AI 编码助手一起使用时,您可以启用更安静的输出以提高可读性并减少上下文噪音。此功能在保留基本故障信息的同时最小化测试输出冗长度。环境变量
设置以下任意环境变量以启用 AI 友好输出:CLAUDECODE=1- 用于 Claude CodeREPL_ID=1- 用于 ReplitAGENT=1- 通用 AI 代理标志
行为
检测到 AI 代理环境时:- 仅详细显示测试失败
- 隐藏通过、跳过和待办测试指示器
- 摘要统计保持不变
terminal
CLI 用法
执行控制
设置每个测试的超时时间(毫秒)(默认 5000)
重新运行每个测试文件
NUMBER 次,有助于捕获某些错误将所有测试视为
test.concurrent() 测试随机顺序运行测试
设置测试随机化的随机种子
在
NUMBER 次失败后退出测试套件。如果您未指定数字,则默认为 1。同时执行的最大测试数(默认 20)
测试过滤
包括标记为
test.todo() 的测试仅运行名称与给定正则表达式匹配的测试。别名:
-t报告
测试输出报告格式。可用:
junit(需要 —reporter-outfile)、dots。默认:
控制台输出。报告格式的输出文件路径(与 —reporter 一起使用)
启用点状报告。—reporter=dots 的简写
覆盖率
生成覆盖率档案
以
text 和/或 lcov 报告覆盖率。默认为 text覆盖率文件的目录。默认为
coverage快照
更新快照文件。别名:
-u示例
运行所有测试文件:terminal
terminal
terminal