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
相关产品推荐
相关产品推荐

