如何用Jest运行不同文件夹下的所有测试文件?
用单个Jest脚本运行所有测试(含src、e2e、unit)
你可以通过以下几种方式实现用一个脚本运行所有测试:
方法1:直接串联现有命令
在package.json的scripts里新增一个命令,把三个测试命令串行执行:
"scripts": { "test": "jest", "test:e2e": "jest --config ./test/e2e/jest-e2e.json", "test:unit": "jest --config ./test/unit/jest-unit.json", "test:all": "npm run test && npm run test:e2e && npm run test:unit" }
执行npm run test:all就会依次运行src、e2e、unit的测试,前面的命令执行成功才会继续后面的。如果想忽略失败强制执行所有测试,可以把&&换成:
- Linux/macOS用
; - Windows用
&
方法2:用npm-run-all实现跨平台兼容
如果需要跨平台(Windows、Linux、macOS)都能正常运行,推荐使用npm-run-all工具:
- 先安装依赖:
npm install --save-dev npm-run-all
- 在
package.json里新增脚本:
"scripts": { // ... 原有脚本 "test:all": "run-s test test:e2e test:unit" }
run-s是串行执行命令,能按顺序输出测试结果,方便排查问题- 如果你想更快执行,也可以用
run-p并行执行,但多个测试的输出会混在一起
方法3:修改根Jest配置统一管理(注意配置冲突)
如果e2e和unit的Jest配置没有特殊差异,可以修改根目录的jest.config.js(如果没有就新建),让它包含所有测试文件路径:
module.exports = { testMatch: [ "**/src/**/*.spec.js", "**/test/e2e/**/*.spec.js", "**/test/unit/**/*.spec.js" ] };
这样直接运行npm test就能执行所有测试,但要注意:如果e2e或unit有独立的配置(比如超时时间、测试环境不同),这种方法会用根配置覆盖子配置,导致测试异常,这种情况更推荐前两种方法。
内容的提问来源于stack exchange,提问作者Ubaid
相关产品推荐
相关产品推荐

