Jest에서 --runInBand를 사용하면 속도가 빨라지는 이유?

안녕하세요. Jest 관련해서 질문 남깁니다.

Jest의 장점중에 하나가 각 테스트 파일(스위트) 별로 테스트 JS 환경이 완전히 분리가 된다는 점인데요. :+1: 이 점 때문에 생기는 단점이 있습니다.:frowning: node 서버 같은 경우 code coverage를 확인하려면 테스트 환경 내에서 해당 코드를 꼭 require해야 하는데 require 과정에서 불러야 하는 파일과 실행하는 코드가 많아질수록 각 테스트 환경에서 node 서버를 준비하는 것만으로도 수초가 걸립니다. 너무 느리죠.

:thinking: 그런데 신기하게도 아래 stackoverflow에 남겨진 글에서 처럼 --runInBand 옵션을 사용하면 import가 상당히 빨라집니다. --runInBand는 여러 개의 worker 생성하여 병렬적으로 테스트 코드를 실행하지 않고 하나씩 실행합니다. 그렇다고 테스트 환경이 유지되는 것은 아닙니다.

이렇게 빨리지는 이유에 대해서 아시는 분 있을까요? 갑자기 너무 궁금해져서 글 남겨봅니다. 이 질문을 적다 보니 단일 thread에서 할 경우 파일을 읽는 부분에 대해서만 cache를 적용한 걸까라는 밑도 끝도 없는 추측을 해봅니다. :slight_smile:

2 Likes