Angular 13.3迁移后ng test遇编译错误仍显示0/0成功的问题求助
Angular 13.3 ng test忽略编译错误不执行测试的解决办法
1. 启用编译错误阻断测试
打开angular.json,定位到test配置段的options,设置failOnError为true:
"test": { "builder": "@angular-devkit/build-angular:karma", "options": { "failOnError": true, // 其他原有配置 } }
Angular 12+默认将该选项设为false,这会让编译错误被静默忽略,导致测试套件跳过所有用例。开启后,编译错误会直接终止测试进程并输出详细错误信息。
2. 检查Karma配置
打开karma.conf.js,确保没有配置会跳过错误或抑制测试文件识别的选项:
- 移除
autoWatchBatch等可能批量跳过测试的配置 - 确认
client段没有干扰Jasmine执行的设置,示例正确配置:
client: { clearContext: false, jasmine: { random: false } },
3. 严格TypeScript编译检查
修改tsconfig.spec.json,启用严格编译选项,确保编译错误能被及时捕获:
"compilerOptions": { "strict": true, "noImplicitAny": true, // 其他编译选项 }
宽松的编译规则可能让错误被掩盖,导致测试 runner 无法正确解析spec文件。
4. 确认测试文件识别规则
检查angular.json中test配置的include和exclude,保证spec.ts文件没有被意外排除:
"test": { "options": { "include": ["src/**/*.spec.ts"], "exclude": [] } }
错误的路径规则会导致Karma找不到任何测试文件,最终显示0 of 0 SUCCESS。
5. 对齐依赖版本
确保@angular/cli、@angular-devkit/build-angular、karma和karma-jasmine等依赖与Angular 13.3版本完全匹配。执行以下命令检查并更新:
npm list @angular/cli npm install @angular/cli@13.3.0 @angular-devkit/build-angular@13.3.0 karma@~6.3.0 karma-jasmine@~4.0.0 --save-dev
版本不兼容可能引发测试 runner 的异常行为。
内容的提问来源于stack exchange,提问作者Prachi Agarwal
相关产品推荐
相关产品推荐

