功能导航
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 插件