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

如何通过单个ng test命令一次性运行Angular应用及所有库的Jest测试?

一次性运行所有Angular应用与库测试的解决方案

嘿,我完全懂你面对18个库要挨个执行测试的痛苦——手动输入命令或者写顺序脚本都太耗时间了!其实不用这么麻烦,咱们可以通过几种方式实现用单个命令一次性跑完全部测试,甚至还能并行执行来节省时间:

方法1:用npm脚本批量(并行)执行

如果你想大幅缩短总耗时,推荐用concurrently工具并行运行所有测试:

  1. 先安装依赖:
npm install --save-dev concurrently
  1. 在package.json的scripts里添加自定义命令。如果你的库都是以lib开头命名(比如lib1、lib2...),直接把所有测试命令列进去就行(记得加--watch=false避免卡在监听模式):
"scripts": {
  "test:all": "concurrently \"ng test --watch=false\" \"ng test lib1 --watch=false\" \"ng test lib2 --watch=false\" ... \"ng test lib18 --watch=false\""
}
  1. 执行时只需跑:
npm run test:all

要是担心测试日志混在一起,可以给每个测试命令指定单独的输出目录,比如:

"test:all": "concurrently \"ng test --watch=false --output-path=coverage/app\" \"ng test lib1 --watch=false --output-path=coverage/lib1\" ..."

方法2:用脚本自动遍历所有库(适合库数量多的情况)

18个库手动列命令太麻烦?写个简单脚本就能自动遍历所有库项目:

针对Linux/macOS的Shell脚本

  1. 在项目根目录创建run-all-tests.sh文件,内容如下:
#!/bin/bash

# 先运行应用的测试
echo "Running application tests..."
ng test --watch=false

# 遍历所有以lib开头的库项目并执行测试
echo "Running library tests..."
for project in $(ng config projects | grep -E "^lib" | cut -d: -f1); do
  echo "Testing $project..."
  ng test $project --watch=false
done
  1. 给脚本添加执行权限:
chmod +x run-all-tests.sh
  1. 执行脚本:
./run-all-tests.sh

针对Windows的批处理脚本

创建run-all-tests.bat文件,内容如下:

@echo off
echo Running application tests...
ng test --watch=false

echo Running library tests...
for /f "tokens=1 delims=:" %%p in ('ng config projects ^| findstr /r "^lib"') do (
  echo Testing %%p...
  ng test %%p --watch=false
)

双击运行这个批处理文件即可。

小提示

  • 如果需要生成覆盖率报告,给每个ng test命令加上--code-coverage参数,每个项目的覆盖率结果会自动保存到对应目录。
  • 并行执行时若遇到端口冲突(默认ng test用9876端口),可以给每个库的测试指定不同端口,比如ng test lib1 --watch=false --port=9877。

内容的提问来源于stack exchange,提问作者ed-tester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:38:39