내가해냄

Jest의 병렬실행

836586697769 2024. 7. 15. 16:15

@notion

npm run test 명령어 실행 시 대부분의 테스트 프레임워크는 테스트 실행 시간을 줄이기 위해 기본적으로 모든 테스트 파일을 병렬로 실행

병렬 실행의 이점과 문제점

  • 이점
    • 테스트 실행 시간 단축
    • CPU 코어 최대한 활용 가능
  • 문제점
    • 테스트 간 공유되는 자원(e.g. 데이터베이스, 파일 시스템 등)이 있을 경우 충돌 발생 가능
    • 전역 상태를 변경하는 테스트는 다른 테스트에 영향을 줄 수 있음

 

Jest의 병렬 실행 제어 방법

  • maxWorkers 옵션: 병렬로 실행할 작업자 수 제한
    • 명령어로 설정: jest --maxWorkers=4
    • package.json 파일 스크립트 설정:
"scripts": {
  "test": "jest --maxWorkers=4"
}
  • 단일 실행 모드: jest --runInBand 명령어로 테스트 파일 순차적 실행
  • Setup/Teardown: 테스트 간의 자원 공유 문제를 해결하기 위해 각 테스트 파일 또는 테스트 케이스 전후에 자원을 초기화
// Example.test.js
beforeEach(async () => {
  // Setup code, e.g. initializing database
});

afterEach(async () => {
  // Teardown code, e.g. cleaning up database
});

 

Jest 설정 예시

  • package.json
{
  "scripts": {
    "test": "jest"
  },
  "jest": {
    "testEnvironment": "node",
    "setupFilesAfterEnv": ["<rootDir>/jest.setup.js"],
    "maxWorkers": 4
  }
}
  • jest.config.js
{
  "scripts": {
    "test": "jest"
  },
  "jest": {
    "testEnvironment": "node",
    "setupFilesAfterEnv": ["<rootDir>/jest.setup.js"],
    "maxWorkers": 4
  }
}