我有一套Jest测试,在本地运行jest
时工作正常-但是当它在Jenkins中只运行jest
时,它在其中一个测试中冻结并挂起。整个测试套件在本地通常需要大约15秒。
当我运行jest --runInBand
时,它确实在Jenkins上工作,以便测试按顺序运行。
调试此问题的最佳方法是什么和/或可能会发生什么?
我们最近刚刚转换到typescript和ts-jest,所以我认为这可能是罪魁祸首,但仍然想了解这个问题。
// jest.config.js
/* @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
roots: ["./src"],
preset: "ts-jest",
testEnvironment: "node",
transform: {
"^.+\\.(ts|tsx)?$": "ts-jest",
},
testMatch: ["**/?(*.)+(spec|test).+(ts|tsx|js)"],
}
2条答案
按热度按时间5lhxktic1#
一般来说,jest将保持自身打开状态,直到所有句柄都被释放。这会导致Jenkins看起来挂起,因为jest还没有释放对终端的控制(并且由于jest用于运行测试的后台工作节点,在本地运行时往往会有不同的行为)。一般来说,运行
--forceExit --detectOpenHandles
会强制释放终端(从而防止jenkins挂起),并检测是否仍有打开的句柄需要在测试中修复。查看jest hangs indefinitely, runs no tests了解更多信息。
liwlm1x92#
Jest会适应你的最大资源。不管你有多少资源。玩笑会把他们都榨干的。您可以使用--maxWorkers选项限制CPU使用。
--maxWorkers=<num>|<string>