进阶 vitest.dev 2026-10-22 19:00:41 · 28 阅读

第1章 为什么选择 Vitest:Vite 驱动下的下一代测试框架

为什么选择 Vitest

Vitest 由 Vite 驱动。虽然使用 Vitest 并不需要深入了解 Vite,但理解 Vite 有助于解释 Vitest 的一些独特优势。欲了解更多关于 Vite 的内容,请阅读《Why Vite》指南或观看 Evan You 的演讲《Next generation frontend tooling with ViteJS》。

对 Vite 原生测试运行器的需求

Vite 对常见 Web 模式的开箱即用支持、如 glob 导入和 SSR 原语等功能,以及众多插件和集成,共同培育了一个充满活力的生态系统。其出色的开发和构建体验是其成功的关键。在文档领域,已有多个基于 Vite 的 SSG 替代方案。然而,Vite 在单元测试方面一直缺乏清晰的解决方案。Jest 等现有选项诞生于不同的上下文环境,与 Vite 存在大量功能重复,迫使用户配置两套不同的流水线。

利用 Vite 开发服务器在测试期间转换文件,使得构建一个简单的运行器成为可能。该运行器无需处理转换源文件的复杂性,可以专注于提供最佳的测试开发体验(DX)。它使用与你的应用相同的配置(通过 vite.config.js),在开发、构建和测试期间共享通用的转换流水线。它具有可扩展性,使用相同的插件 API,允许你及工具维护者提供与 Vite 的一等集成。这是一个从一开始就针对 Vite 理念构建的工具,充分利用其在 DX 方面的改进,例如即时热模块替换(HMR)。这就是 Vitest,一个由 Vite 驱动的下一代测试框架。

鉴于 Jest 的巨大采用率,Vitest 提供了兼容的 API,允许在大多数项目中将其作为直接替换方案使用。它还包含设置单元测试所需的最常见功能(Mock、快照、覆盖率)。Vitest 高度重视性能,使用 Worker 线程尽可能并行运行。在一些移植案例中,测试运行速度提升了整整一个数量级。观察模式默认开启,这与 Vite 推崇的开发优先体验保持一致。即使在 DX 方面有诸多改进,Vitest 仍通过谨慎选择依赖项(或直接内联所需部分)保持轻量级。

Vitest 旨在成为 Vite 项目的首选测试运行器,甚至对于不使用 Vite 的项目,它也是一个可靠的替代方案。

继续阅读入门指南

Vitest 与其他工具的区别

你可以查看“比较”部分,详细了解 Vitest 与其他类似工具的区别。

评论 (0)