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

Jest覆盖率无法找到文件:.NET跨项目TypeScript测试求助

Jest无法收集跨项目TypeScript源码覆盖率的解决方法

问题分析

当前Jest配置在.NET多项目结构下无法识别源码文件,导致覆盖率全为0。核心问题集中在路径配置偏差、覆盖率提供者兼容性,以及测试文件与源码文件的关联逻辑上。

解决方案

1. 检查测试文件的导入路径

确保ConfigHelper.test.ts中正确导入源码文件,路径需从测试文件所在目录出发:

// TestProject/TestScripts/ConfigHelper.test.ts
import ConfigHelper from '../../Project/Content/Src/Scripts/Helpers/ConfigHelper';

若导入路径错误,Jest无法追踪到被测试的源码文件,自然无法生成有效覆盖率数据。

2. 修正Jest配置文件

调整jest.config.ts的关键配置项:

export default {
  roots: [
    "./TestScripts", // 仅保留测试目录即可,源码通过导入逻辑自动关联
    "../Project/Content/Src/Scripts/"
  ],
  testMatch: [
    "**/__tests__/**/*.+(ts|tsx|js)",
    "**/?(*.)+(spec|test).+(ts|tsx|js)",
  ],
  transform: {
    "^.+\\.(ts|tsx)$": "ts-jest",
  },
  collectCoverage: true,
  collectCoverageFrom: [
    "../Project/Content/Src/Scripts/**/*.ts" // 移除多余的./,确保路径相对TestProject目录正确
  ],
  clearMocks: true,
  coverageDirectory: "coverage",
  coverageProvider: "v8", // 替换babel为v8,适配ts-jest与TypeScript的兼容性
  preset: "ts-jest",
  testEnvironment: "node",
};

关键调整说明:

  • collectCoverageFrom:移除路径前缀的./,保证从TestProject目录出发能正确定位到源码
  • coverageProvider:改用v8覆盖率提供者,避免babel配置缺失或不兼容问题
  • roots:简化配置,仅保留测试目录,源码通过导入逻辑关联即可

3. 验证TypeScript配置

确保Project目录下存在tsconfig.json,并包含源码与测试文件路径:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "outDir": "./dist",
    "strict": true
  },
  "include": [
    "./Content/Src/Scripts/**/*",
    "../TestProject/TestScripts/**/*"
  ]
}

ts-jest依赖TypeScript配置来编译和识别文件,缺失或错误的配置会导致Jest无法处理源码文件。

4. 重新执行测试

在TestProject目录下运行测试命令:

npm run test

此时Jest应能正确识别源码文件并生成正常的覆盖率报告。

内容的提问来源于stack exchange,提问作者bradley plater

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:23:25