React TypeScript项目:Jest生成JUnit测试与覆盖率XML报告失败求助
问题排查与修复方案
你的配置存在几个关键问题:
- 测试脚本参数无效:
jest --coverage --jest-junit.xml中的--jest-junit.xml是错误参数,Jest无法识别,会干扰正常执行。 - 覆盖率报告格式未配置:
coverageReporters仅设置了text,缺少XML格式的配置,因此不会生成覆盖率XML文件。 - 重复配置引发冲突:同时启用了
testResultsProcessor(jest-junit-reporter)和reporters中的jest-junit,二者功能重复,且当前jest-junit已推荐使用reporters方式,无需保留旧的处理器配置。 - 输出目录不符合需求:你希望在项目根目录生成文件,但
jest-junit的outputDirectory设为test_results,会将XML文件放到该子文件夹中。
修改后的package.json配置:
{ "name": "#", "version": "0.0.0", "license": "MIT", "scripts": { "start": "nx serve", "build": "nx build", "test": "jest --coverage", "devstart": "nx serve shell --open --devRemotes=dashboard" }, // ... 其他原有配置 "jest": { "coverageReporters": [ "text", "cobertura" // 添加该配置以生成通用格式的覆盖率XML文件 ], "reporters": [ "default", "jest-junit" ] }, "jest-junit": { "outputDirectory": "./", // 指定根目录生成测试结果XML,也可删除该字段使用默认值 "outputName": "jest-junit.xml" } }
额外说明:
- 移除了
testResultsProcessor配置,避免与reporters中的jest-junit冲突。 - 运行
npm run test后,会在根目录生成jest-junit.xml(测试结果),同时在coverage文件夹下生成cobertura-coverage.xml(覆盖率报告)。若想将覆盖率XML也放到根目录,可在jest配置中添加"coverageDirectory": "./"。
内容的提问来源于stack exchange,提问作者Vidushika Dasanayka
相关产品推荐
相关产品推荐

