Vitest 极速现代的单元测试框架

由 Vite 提供支持,带来极速的测试体验和简洁的 API

terminal

user@machine:~$ npm run test

src/utils.test.js (5 tests)

formatDate returns correct format

calculateTotal adds numbers correctly

validateEmail works for valid addresses

validateEmail rejects invalid addresses

sortArray orders numbers correctly

Tests passed in 123ms

user@machine:~$ _

关于 Vitest

Vitest 是一个基于 Vite 构建的极速单元测试框架,兼具 Jest 的 API 友好性和 Vite 的极速性能。

名字含义

Vitest 这个名字是由 "Vite" 和 "Test" 组合而成,清晰地表明了它与 Vite 构建工具的紧密联系,同时也直接表明了它的测试框架属性。

起源

Vitest 由 Anthony Fu(Vue 核心团队成员)于 2021 年创建,作为 Vite 生态系统的自然延伸。它旨在解决现有测试框架在 Vite 项目中使用时的性能瓶颈和集成问题,提供与 Vite 开发体验一致的测试体验。

Vitest 开发场景示意图

核心特性

  • 与 Vite 共享配置、转换器和插件
  • 极速 HMR (热模块替换) 支持
  • 兼容 Jest 的 API,降低迁移成本
  • 内置断言、模拟和覆盖率支持

优缺点分析

了解 Vitest 相比其他测试框架的优势和目前存在的不足

主要优点

  • 极速性能

    得益于 Vite 的极速 HMR 和 esbuild 支持,测试启动和运行速度比传统框架快数倍。

  • 与 Vite 无缝集成

    共享相同的配置、插件和转换器,减少上下文切换和配置复杂性。

  • Jest 兼容 API

    熟悉的 API 设计降低了学习成本,使 Jest 用户可以轻松迁移。

  • 丰富的插件生态

    支持多种 UI 框架、工具和扩展,满足不同项目需求。

  • 即时反馈

    在开发过程中提供即时的测试结果反馈,加速开发迭代。

主要缺点

  • 相对年轻

    作为较新的测试框架,生态系统和社区支持仍在成长中。

  • 文档不够完善

    相比 Jest 等成熟框架,文档和示例相对较少,高级用法可能需要查看源码。

  • 潜在的稳定性问题

    虽然核心功能稳定,但某些边缘情况可能存在未发现的 bug。

  • 兼容性限制

    某些 Jest 插件和工具可能需要额外适配才能在 Vitest 中使用。

  • 人才储备较少

    熟悉 Vitest 的开发者相对较少,团队可能需要额外培训。

测试框架性能对比

免费资源与使用方法

Vitest 是完全免费开源的,以下是获取和使用的详细指南

免费资源

  • 完全开源的核心框架(MIT 许可证)
  • 官方文档和教程
  • 社区维护的示例项目
  • VS Code 集成插件
  • 多种测试报告格式支持
查看所有资源

安装步骤

// 使用 npm

npm install -D vitest

// 使用 yarn

yarn add -D vitest

// 使用 pnpm

pnpm add -D vitest

对于 Vite 项目,无需额外配置即可使用

详细安装指南

基本使用

// package.json 添加脚本

"scripts": {

"test": "vitest",

"test:watch": "vitest watch",

"test:run": "vitest run"

}

// 运行测试

npm run test

查看示例代码
math.test.js
import { describe, it, expect } from 'vitest'
import { add, multiply } from './math'

describe('数学函数测试', () => {
  it('应该正确计算两个数的和', () => {
    expect(add(2, 3)).toBe(5)
    expect(add(-1, 1)).toBe(0)
  })

  it('应该正确计算两个数的积', () => {
    expect(multiply(4, 5)).toBe(20)
    expect(multiply(0, 10)).toBe(0)
  })
})

社区评价

来自开发者社区的真实反馈和使用体验

第 1 页,共 6 页

准备好尝试 Vitest 了吗?

加入成千上万已经在使用 Vitest 提升测试效率的开发者行列