close

功能导航

Rstest 将测试融入 Rsbuild 与 Rspack 构建链路。它会尽可能复用构建配置,通过基于 bundle 的执行模型运行测试,并提供本地开发和 CI 所需的核心测试能力。

复用现有构建配置

Rstest 可以复用 Rsbuild 与 Rspack 配置,包括模块解析、代码转换和插件行为。这样可以减少测试专用构建配置的重复维护,让测试环境与最终交付代码保持一致。

了解更多关于 配置 Rstest

基于 Rspack 构建

Rstest 基于 Rspack 的 bundling pipeline 运行测试,因此可以利用 Tree Shaking、lazyBarrel 等构建期优化,同时让测试行为更贴近真实产物。

基于 SWC 转译

默认情况下,Rstest 使用 Rspack 内置的 SWC loader 转换 JavaScript 和 TypeScript。当项目需要不同的语法或转换行为时,你可以在配置文件中自定义 SWC 选项。

了解更多关于 配置 SWC

多项目测试

Rstest 可以在同一个进程中运行多个测试项目,每个项目都可以保留自己的配置和环境。这适合 monorepo、多应用工作区,以及需要分别覆盖 Node、DOM 或 Browser Mode 的项目。

了解更多关于 多项目测试

测试分片(Sharding)

Rstest 可以将测试文件拆分为多个分片并行执行。你可以在 CI 中把同一套测试分发到多台机器以缩短总耗时,并在所有分片完成后通过 blob 报告器与 rstest merge-reports 合并测试结果和代码覆盖率。

了解更多关于 测试分片

源码内联测试

Rstest 支持类 Rust 的模块测试风格,可以在源码文件中直接编写测试块。对于小型工具函数和 helper,将快速检查放在实现旁边会让开发更顺手。

了解更多关于 源码内联测试

Watch 模式

当你修改测试文件或其依赖模块时,Rstest 会基于模块图分析,仅重新运行受影响的测试文件。随着测试规模增长,这可以让本地反馈保持快速。

DOM 测试

Rstest 可以通过 jsdom 或 happy-dom 模拟 DOM 与浏览器 API。它支持 React、Vue 等常见框架测试流程,并兼容 Testing Library 和 CSS Modules。

了解更多关于 DOM 测试

浏览器模式(Browser Mode)

Rstest 提供 Browser Mode,适用于需要真实浏览器、而不是 jsdom 或 happy-dom 这类模拟环境的测试。它可以帮助你验证浏览器 API、渲染行为,以及 DOM 模拟器难以覆盖的交互。

Browser Mode 基于 Playwright 运行,可在 Chromium、Firefox 和 WebKit 中执行测试,适合跨浏览器验证。

了解更多关于 浏览器模式

代码覆盖率

Rstest 可以使用 istanbul 收集代码覆盖率。你可以在 Rstest 配置文件中将 coverage.enabled 设置为 true 来启用覆盖率。

了解更多关于 代码覆盖率

更多能力

  • 与 Jest 兼容的断言和快照
  • Mock 和 spy 工具
  • 文件级沙箱隔离
  • 用于 setup 和 teardown 的生命周期钩子
  • 内置报告器和 CI 输出
  • 支持按目录、项目、文件或测试名过滤
  • VS Code 插件