병렬 처리
파일 병렬 처리
기본적으로 Vitest는 _테스트 파일_을 병렬로 실행합니다. 지정된 pool
설정에 따라 Vitest는 테스트 파일을 병렬화하기 위해 다양한 메커니즘을 사용합니다:
"자식 프로세스"와 "워커 스레드"는 모두 "워커"라고 불립니다. 실행 중인 워커 수는 minWorkers
및 maxWorkers
옵션으로 설정할 수 있습니다. 또는 poolOptions
구성을 통해 더 세밀하게 제어할 수 있습니다.
테스트가 많은 경우 병렬로 실행하는 것이 일반적으로 더 빠르지만, 이는 프로젝트, 환경 및 격리 설정에 따라 달라집니다. 파일 병렬 처리를 비활성화하려면 fileParallelism
을 false
로 설정할 수 있습니다. 가능한 성능 향상에 대해 자세히 알아보려면 성능 가이드를 읽어보세요.
테스트 병렬 처리
_테스트 파일_과 달리 Vitest는 _테스트_를 순차적으로 실행합니다. 즉, 단일 테스트 파일 내의 테스트는 정의된 순서대로 실행됩니다.
Vitest는 테스트를 동시에 실행하기 위해 concurrent
옵션을 지원합니다. 이 옵션이 설정되면 Vitest는 같은 파일 내의 동시 테스트를 그룹화하고(동시에 실행되는 테스트 수는 maxConcurrency
옵션에 따라 달라집니다) Promise.all
로 실행합니다.
Vitest는 특별한 분석을 수행하지 않으며 이러한 테스트를 실행하기 위해 추가 워커를 생성하지 않습니다. 즉, 비동기 작업에 많이 의존하는 경우에만 테스트 성능이 향상됩니다. 예를 들어, concurrent
옵션이 지정되었더라도 아래 예시의 테스트는 동기식이기 때문에 계속해서 순차적으로 실행됩니다:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
모든 테스트를 동시에 실행하려면 sequence.concurrent
옵션을 true
로 설정할 수 있습니다.