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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:30:18