목록 보기
JUnit5에 병렬화를 도입한 이야기 - 클래스 단위
백엔드

JUnit5에 병렬화를 도입한 이야기 - 클래스 단위

데보션
데보션
2025년 2월 25일

두줄요약

JUnit5 Vintage 엔진에 클래스 단위 병렬 실행을 도입한 과정을 설명했습니다. ForkJoinPool 대신 fixed thread pool과 CompletableFuture를 사용해 5.12 버전에 반영했습니다.

핵심 내용

  • JUnit5 Vintage 엔진에 클래스 단위 병렬 실행을 도입한 과정
  • Jupiter 엔진과 달리 Vintage 엔진에는 기본 병렬 실행 기능이 없어 순차 실행 구조였던 점
  • 메인테이너 피드백을 반영해 ForkJoinPool 대신 fixed thread pool과 CompletableFuture 기반 비동기 실행으로 전환한 점
  • JUnit5 5.12 버전부터 해당 기능을 사용할 수 있다는 안내

구조와 흐름

  • JUnit Platform, TestEngine, Jupiter, Vintage 역할 구분
  • 테스트 요소를 반복문으로 순차 처리하던 기존 실행 흐름
  • RunnerExecutor 호출을 병렬화 대상으로 선정한 기준

선택 이유

  • ForkJoinPool은 하위 작업 분할 구조에서 효과적이지만, 클래스 단위 독립 작업에는 이점이 제한적이라는 판단
  • 고정 크기 스레드 풀로 안정적인 병렬 실행 구성
  • 메서드 단위 병렬화가 더 유리할 수 있다는 추가 제안과 확장 가능성

적용해볼 점

  • 테스트 실행 구조가 독립 작업인지, 분할 작업인지에 따라 스레드 풀 전략 조정
  • CompletableFuture와 ExecutorService로 병렬 실행과 종료 처리를 명확히 분리
  • 오픈소스 기여 시 메인테이너 피드백을 반영해 설계 재검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...