优化 Jest 测试性能可以提高开发效率和 CI/CD 速度:
1. 并行执行测试: Jest 默认并行运行测试,可以显著提高速度。确保测试之间相互独立。
2. 选择性运行测试:
bash# 只运行修改过的文件相关测试 jest --onlyChanged # 只运行匹配模式的测试 jest --testPathPattern=auth # 使用 .only 临时运行特定测试 test.only('specific test', () => { /* ... */ });
3. 优化测试环境:
javascript// jest.config.js module.exports = { testEnvironment: 'node', // 比 jsdom 更快 maxWorkers: '50%', // 限制工作进程数量 testTimeout: 5000, // 设置合理的超时时间 };
4. 使用 Mock 减少外部依赖:
javascriptjest.mock('./api', () => ({ fetchData: jest.fn(() => Promise.resolve('mocked data')) }));
5. 优化覆盖率收集:
javascriptcollectCoverageFrom: [ 'src/**/*.{js,jsx,ts,tsx}', '!src/**/*.stories.{js,jsx,ts,tsx}', '!src/**/*.d.ts' ],
6. 缓存优化:
- Jest 自动缓存转换结果
- 使用
--no-cache禁用缓存(调试时) - 清理缓存:
jest --clearCache
7. 减少不必要的测试:
- 避免过度测试
- 跳过慢速测试:
test.skip('slow test', () => { /* ... */ }); - 使用
describe.skip跳过整个测试套件
8. 监听模式优化:
bash# 使用 --watchAll 监听所有文件 jest --watchAll # 使用 --watch 只监听相关文件 jest --watch
最佳实践:
- 保持测试快速和独立
- 使用 Mock 隔离外部依赖
- 定期审查和优化慢速测试
- 在 CI 中使用
--maxWorkers控制资源使用