You need to enable JavaScript to run this app. Jest测试文件未按预期顺序执行,如何配置实现固定执行顺序?
优惠活动
大模型
产品
解决方案
定价
更多

Jest测试文件未按预期顺序执行,如何配置实现固定执行顺序?

问题原因

Jest默认不会按文件名中的数字序号自动排序测试文件,你之前用到的--runInBand/-i参数仅能保证测试串行执行,不会干预文件的执行排序逻辑,因此需要额外配置排序规则实现需求。

解决方案

方案1:自定义测试序列器(适合测试文件较多/后续会新增测试的场景)

该方案可以适配所有带数字序号的测试文件,后续新增Test5.test.js等文件也无需修改配置。

  1. 项目根目录新建custom-test-sequencer.js文件,写入以下代码:
const Sequencer = require('@jest/test-sequencer').default;

class CustomSequencer extends Sequencer {
  sort(tests) {
    // 提取文件名中的数字按从小到大排序
    return tests.sort((a, b) => {
      const numA = parseInt(a.path.match(/Test(\d+)\.test\.js/)[1], 10);
      const numB = parseInt(b.path.match(/Test(\d+)\.test\.js/)[1], 10);
      return numA - numB;
    });
  }
}

module.exports = CustomSequencer;
  1. 修改jest.config.js,新增testSequencer配置项指向该文件:
'use strict';

module.exports = {
    testMatch: [
        '**/integration/*.test.js'
    ],
    // 新增此行配置
    testSequencer: './custom-test-sequencer.js'
};
  1. 保留原package.json中的test命令不变,重新执行npm test即可看到测试按预期顺序执行。

方案2:直接指定测试文件(适合测试文件数量少的场景)

无需新增文件,直接修改package.json的执行命令,按预期顺序传入测试文件路径即可:

{
  "scripts": {
    "test": "jest tests/integration/Test1.test.js tests/integration/Test2.test.js tests/integration/Test3.test.js tests/integration/Test4.test.js -i"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:21:03