You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.ts
  • tsConfig是否设置为src/tsconfig.spec.json
  • polyfills是否指向src/polyfills.ts
  • include数组是否包含**/*.spec.ts(确保覆盖所有测试文件)

4. 确认tsconfig.spec.json的正确性

打开src/tsconfig.spec.json,检查以下配置:

  • compilerOptions.types数组必须包含jasmine和node,否则测试环境无法识别Jasmine的语法
  • files数组要包含src/test.ts和src/polyfills.ts
  • compilerOptions.module需设置为commonjs,这是Angular测试环境的要求

5. 清理缓存与依赖重装

迁移过程中缓存或依赖版本不兼容很容易引发奇怪问题,试试以下步骤:

  1. 执行ng clean清理Angular缓存
  2. 删除node_modules文件夹和package-lock.json(或yarn.lock)
  3. 重新运行npm install(或yarn install)
  4. 再执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:42