Angular 6迁移后执行ng test出现Executed 0 of 0 ERROR求助
解决Angular 5迁移至Angular 6后
ng test无测试用例执行的问题 我之前在Angular版本迁移时也碰到过类似的头疼问题,结合你的情况,分享几个实际有效的排查和解决方向:
1. 排查测试用例的标记与基础结构
- 快速扫一遍所有
.spec.ts文件,确认没有用xdescribe(禁用整个测试套件)或xit(禁用单个测试用例)标记测试——有时候迁移过程中不小心注释或误改了这些标记,会导致测试被跳过。 - 确保每个测试用例都遵循标准结构:
describe包裹测试套件,it定义测试用例,避免出现语法错误(比如括号不匹配、异步操作未正确处理),语法错误可能导致Karma无法识别测试用例。
2. 验证src/test.ts的核心配置
虽然你替换了官方参考文件,但还是要确认关键代码是否存在:
// 确保这段代码正确导入所有.spec.ts文件 declare const require: any; require.context('./', true, /\.spec\.ts$/);
这段代码负责告诉Webpack加载所有测试文件,如果缺失或路径错误,Karma就算加载了编译后的文件,也无法识别测试用例。
3. 检查angular.json的测试配置细节
在angular.json中找到项目的测试配置节点projects -> [你的项目名] -> architect -> test -> options,逐一确认:
main是否指向src/test.tstsConfig是否设置为src/tsconfig.spec.jsonpolyfills是否指向src/polyfills.tsinclude数组是否包含**/*.spec.ts(确保覆盖所有测试文件)
4. 确认tsconfig.spec.json的正确性
打开src/tsconfig.spec.json,检查以下配置:
compilerOptions.types数组必须包含jasmine和node,否则测试环境无法识别Jasmine的语法files数组要包含src/test.ts和src/polyfills.tscompilerOptions.module需设置为commonjs,这是Angular测试环境的要求
5. 清理缓存与依赖重装
迁移过程中缓存或依赖版本不兼容很容易引发奇怪问题,试试以下步骤:
- 执行
ng clean清理Angular缓存 - 删除
node_modules文件夹和package-lock.json(或yarn.lock) - 重新运行
npm install(或yarn install) - 再执行
ng test
6. 对比新Angular 6项目的配置
如果以上方法都无效,可以创建一个全新的Angular 6项目(ng new test-demo),对比它的angular.json、test.ts、karma.conf.js和tsconfig.spec.json文件,找出你项目中的配置差异——有时候迁移时的自定义配置会和新版本的默认配置冲突。
内容的提问来源于stack exchange,提问作者Marcus Riemer
相关产品推荐
相关产品推荐

