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

Angular项目用Jest跳过测试仍耗时,如何将跳过测试的耗时降至0秒

原因说明

xdescribe仅会跳过测试块内部的用例执行,Jest仍然会完成完整的文件加载、转译、依赖解析流程:

  1. 解析并转译整个测试文件的TypeScript代码
  2. 加载所有import引入的依赖(包括Angular核心模块、NgRx、Translate组件、共享库等重依赖)
  3. 扫描整个测试文件的结构确认测试块的跳过标记
    你示例的测试文件引入了大量第三方和业务公共依赖,光是依赖加载的耗时就超过20秒,这就是你标记跳过仍然有耗时的核心原因。

解决方案

彻底跳过指定测试文件(推荐,可将对应耗时直接降至0)

如果确定这部分测试长期不需要运行,直接在Jest配置文件(通常为jest.config.js/jest.config.ts)中添加忽略规则,Jest会完全跳过这些文件的加载、解析流程:

module.exports = {
  // 其余原有配置保持不变
  testPathIgnorePatterns: [
    // 支持精准匹配单个文件
    '<rootDir>/src/app/xxx/course-mapping-add.guard.spec.ts',
    // 也支持正则匹配一批路径下的测试文件
    '<rootDir>/src/app/legacy-module/.*\\.spec\\.ts$'
  ]
}

如果是临时跳过不需要修改配置,直接在测试命令追加忽略参数即可:

jest --testPathIgnorePatterns=course-mapping-add --testPathIgnorePatterns=legacy-module

按需切换测试执行

如果需要在不同场景下选择性运行这部分测试,可以在测试文件顶部添加条件判断,不需要运行时直接终止文件执行:

if (process.env.SKIP_UNNECESSARY_TESTS === 'true') {
  process.exit(0);
}
// 原有import、测试代码保持不变

运行测试时传入对应的环境变量即可触发跳过逻辑:

# Linux/Mac环境
SKIP_UNNECESSARY_TESTS=true jest
# Windows环境
set SKIP_UNNECESSARY_TESTS=true && jest

全量测试通用提速优化

针对你全量测试45分钟的性能问题,也可以通过通用配置大幅降低耗时:

  • 换用更快的转译器:将jest-preset-angular的转译器替换为esbuild,相比默认ts-jest转译速度提升50%以上
  • 开启Jest缓存:默认Jest会缓存转译结果,二次运行不需要重复转译文件,可添加--cache参数显式开启
  • 并行执行:添加--maxWorkers=50%参数,利用多核CPU并行执行测试,全量运行速度可提升2-3倍
  • 增量测试:日常开发使用jest --onlyChanged仅运行改动文件对应的测试,CI阶段使用--changedSince=main仅运行主分支之后改动代码对应的测试,不需要每次全量执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:39:00