Vitest

Vite原生测试框架,极速的单元测试。共享Vite的配置和插件系统,与Vite深度集成。

2021发布年份
Anthony Fu创始人

核心特性

Vitest 的设计哲学和关键技术特性

Vite原生

基于Vite的模块解析和转换。共享Vite配置和插件系统,无需额外配置。

Vite原生模块解析共享配置

极速测试

利用Vite的HMR和ESM支持,测试速度极快。比传统测试框架快10-100倍。

HMRESM极速

Jest兼容

兼容Jest API,可无缝迁移。支持expect、describe、it等Jest语法。

Jest兼容无缝迁移API兼容

TypeScript

原生TypeScript支持,无需额外配置。类型安全的测试编写。

TypeScript原生支持类型安全

生态系统

围绕 Vitest 构建的完整工具链

Vue测试

@vue/test-utils集成。支持Vue组件测试,与Vite Vue插件深度集成。

@vue/test-utilsVue组件测试

React测试

@testing-library/react集成。支持React组件测试,与Vite React插件集成。

@testing-library/reactReact组件测试

覆盖率

内置代码覆盖率支持。支持v8和istanbul两种覆盖率提供者。

v8istanbul代码覆盖

UI测试

Vitest UI提供可视化测试界面。实时查看测试结果和覆盖率报告。

@vitest/ui可视化测试界面

快照测试

支持快照测试,与Jest快照兼容。可序列化组件、DOM、CSS等。

快照测试Jest兼容序列化

浏览器测试

支持浏览器环境测试。可在真实浏览器中运行测试,测试浏览器API。

浏览器测试真实环境浏览器API

快速入门

# 安装Vitest
npm install vitest --save-dev

# 创建测试文件
echo 'import { describe, it, expect } from "vitest";

function sum(a, b) {
    return a + b;
}

describe("sum", () => {
    it("adds 1 + 2 to equal 3", () => {
        expect(sum(1, 2)).toBe(3);
    });
});' > sum.test.js

# 运行测试
npx vitest

# 运行所有测试
npx vitest run

# 生成覆盖率报告
npx vitest --coverage

配置示例

// vitest.config.ts
import { defineConfig } from "vitest/config";
import vue from "@vitejs/plugin-vue";
import react from "@vitejs/plugin-react";

export default defineConfig({
    plugins: [vue(), react()],
    test: {
        // 测试环境
        environment: "jsdom",
        
        // 全局变量
        globals: true,
        
        // 覆盖率配置
        coverage: {
            provider: "v8",
            reporter: ["text", "json", "html"],
            exclude: [
                "node_modules/",
                "src/test/"
            ]
        },
        
        // 设置文件
        setupFiles: ["./src/test/setup.ts"],
        
        // 包含模式
        include: ["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
        
        // 排除模式
        exclude: ["node_modules", "dist", ".idea", ".git", ".cache"]
    }
});

学习资源

官方文档

全面的API参考、配置指南和最佳实践。

vitest.dev/guide →

Vitest GitHub

源代码仓库,可查看源码和参与贡献。

github.com/vitest-dev/vitest →

Vitest配置

完整的配置参考和示例。

Config →

Vitest示例

官方示例项目和模板。

Examples →

与其他测试框架对比

vs Jest

Vitest性能更好,与Vite集成更紧密。Jest生态更成熟,社区更大,适合传统项目。

性能Vite集成生态系统

vs Mocha

Vitest功能更丰富,配置更简单。Mocha更灵活,适合需要自定义配置的项目。

功能丰富度配置简单灵活性

vs Jasmine

Vitest现代特性更多,性能更好。Jasmine更轻量,适合简单项目。

现代特性性能轻量级