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

Angular 17项目中库测试未执行问题求助

Angular库测试无法执行的问题排查与解决

问题原因

  • Angular CLI默认测试目标是根应用,直接执行ng test只会扫描根目录的src文件夹,即便添加--include参数,也可能因为测试配置的范围限制,导致projects下的库测试文件被忽略。
  • 当前angular.json中仅配置了根应用的测试规则,未针对库指定独立的测试目标,导致命令无法识别库的测试文件路径。

解决办法

1. 直接指定库名称执行测试

这是最直接的方式,针对目标库运行测试命令:

  • 执行单个测试文件:
ng test my-lib --include projects/my-lib/myfile.spec.ts
  • 运行库的所有测试:
ng test my-lib

2. 确认并完善库的测试配置

检查angular.json中projects/my-lib/architect下是否存在test配置(创建库时默认会生成),确保配置指向库自身的测试文件和配置:

"projects": {
  "my-lib": {
    "architect": {
      "test": {
        "builder": "@angular-devkit/build-angular:karma",
        "options": {
          "polyfills": ["zone.js", "zone.js/testing"],
          "tsConfig": "projects/my-lib/tsconfig.spec.json",
          "preserveSymlinks": true
        }
      }
    }
  }
}

同时确保库目录下的tsconfig.spec.json正确包含测试文件:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "../../out-tsc/spec",
    "types": ["jasmine", "node"]
  },
  "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
}

3. 调整根配置的测试范围(不推荐)

如果需要通过根命令统一执行所有测试,修改根目录的tsconfig.spec.json,将projects目录纳入扫描范围:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": ["jasmine", "node"]
  },
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts",
    "projects/**/*.spec.ts",
    "projects/**/*.d.ts"
  ]
}

之后即可用根命令执行库的测试:

ng test --include projects/my-lib/myfile.spec.ts

内容的提问来源于stack exchange,提问作者decebal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:52:44