You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vitest覆盖率命令无法返回覆盖率报告,原因何在?

解决Vitest + TypeScript项目覆盖率报告不生成的问题

1. 补全Vitest配置文件的覆盖率规则

Vitest默认不会自动匹配所有源码文件,需要在vite.config.ts或vitest.config.ts中明确配置覆盖率的范围和输出规则,示例配置如下:

import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      include: ['src/**/*.{ts,tsx}'], // 指定要统计覆盖率的源码路径
      exclude: [
        'src/**/*.test.{ts,tsx}', // 排除测试文件
        'src/**/*.d.ts' // 排除类型声明文件
      ],
      reporter: ['text', 'html'], // 同时生成终端文本报告和HTML可视化报告
      reportsDirectory: './coverage' // 报告存放目录,默认就是coverage
    }
  }
});

如果缺失include配置,Vitest可能无法定位到需要统计的源码,自然不会生成详细报告。

2. 确认测试文件的匹配规则

如果你的测试文件命名不符合Vitest默认的*.test.ts/*.spec.ts规则,需要在配置中调整测试文件匹配范围:

test: {
  include: ['src/**/*.{test,spec,your-custom-suffix}.{ts,tsx}'], // 适配你的测试文件命名
  // ... 其他配置
}

3. 验证测试用例是否覆盖源码

如果所有测试通过但没有任何用例实际执行源码逻辑,覆盖率报告会显示全0,但至少会生成报告文件。这种情况下需要检查测试用例是否真的调用了源码中的函数、组件等逻辑。

4. 清除缓存后重新执行

Vitest的缓存可能导致覆盖率统计异常,执行以下命令清除缓存后重新生成报告:

npx vitest run --coverage --no-cache

5. 确保依赖版本兼容

@vitest/coverage-v8的版本必须与vitest版本完全一致,版本不匹配会导致功能异常。检查package.json中的版本号,比如:

{
  "devDependencies": {
    "vitest": "^1.0.0",
    "@vitest/coverage-v8": "^1.0.0"
  }
}

如果版本不一致,重新安装对应版本:

npm install @vitest/coverage-v8@<你的vitest版本号> --save-dev

内容的提问来源于stack exchange,提问作者Isa Moura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:23:12