Angular 6执行ng test返回‘0 Tests Completed’问题求助
解决Angular 6升级后
ng test显示0测试完成的问题 我来帮你排查这个Angular 6升级后测试无法正常运行的问题,结合你给出的配置细节和日志信息,咱们一步步梳理可能的原因和解决办法:
1. 检查tsconfig.spec.json的配置细节
你提到tsconfig.json里已经配置了include规则,但要注意Angular测试会优先使用tsconfig.spec.json(你在angular.json里指定的),所以得确认这个文件的配置:
- 确保
include数组覆盖了所有测试文件路径,比如:
路径中的"include": [ "src/**/*.spec.ts", "src/**/*.spec.shallow.ts", "src/**/*.d.ts" ]src/前缀很重要,避免因为相对路径不匹配导致找不到文件。 - 检查是否存在
exclude规则意外排除了测试文件,比如如果有"exclude": ["src/**/*.spec.ts"]这种反向配置,会直接导致测试文件被忽略。
2. 确认src/test.ts入口文件的完整性
Angular CLI的测试体系依赖src/test.ts作为入口文件来加载所有测试用例,升级过程中这个文件可能被修改或遗漏关键代码。你需要确保文件中包含这段代码:
declare const require: any; // 自动加载所有.spec.ts结尾的文件 require.context('./', true, /\.spec\.ts$/); // 如果有.shallow.spec.ts,也要加上对应的匹配规则 require.context('./', true, /\.spec\.shallow\.ts$/);
如果这段代码缺失,Karma就无法自动发现和运行你的测试文件。
3. 校验karma.conf.js的核心配置
虽然你已经添加了mime类型和requirejs插件,但要确保核心的文件加载配置正确:
- 确认
files和preprocessors指向正确的测试入口:
这里的module.exports = function (config) { config.set({ // ...其他配置 files: [ { pattern: './src/test.ts', watched: false } ], preprocessors: { './src/test.ts': ['@angular-devkit/build-angular'] }, // ...你的mime和插件配置 }); };@angular-devkit/build-angular是Angular 6对应的预处理器,不要使用旧版本的angular-cli预处理器。
4. 验证angular.json中测试配置的一致性
你提到三个项目都配置了tsConfig,还要确认对应项目的test配置里的main入口是否正确:
"projects": { "retail": { // ...其他配置 "architect": { "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "tsConfig": "src/tsconfig.spec.json", "karmaConfig": "src/karma.conf.js" } } } } }
如果main路径错误,或者karmaConfig指向了错误的配置文件,也会导致测试用例无法被加载。
5. 清理缓存并重新构建依赖
升级过程中缓存或依赖冲突可能导致奇怪的问题,尝试执行以下命令彻底清理后重新安装:
npm cache clean --force rm -rf node_modules rm package-lock.json npm install ng test retail --source-map=false --no-cache
加上--no-cache参数可以强制Karma不使用缓存,确保加载最新的配置和文件。
6. 检查测试文件的命名和路径
最后再确认所有测试文件的命名符合规则:
- 确保测试文件以
.spec.ts或.spec.shallow.ts结尾,文件名拼写没有错误 - 检查文件路径是否符合
tsconfig.spec.json中include规则的匹配范围,比如有没有测试文件放在src/之外的目录,但你的include规则只覆盖了src/下的文件
从你的日志来看,Karma成功启动了浏览器,但没有找到任何测试用例执行,所以核心问题大概率是测试文件没有被正确发现和加载,按照上面的步骤逐一排查应该能解决问题。
内容的提问来源于stack exchange,提问作者Sherin Sunny
相关产品推荐
相关产品推荐

