목록 보기
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로 병렬 실행과 종료 처리를 명확히 분리
  • 오픈소스 기여 시 메인테이너 피드백을 반영해 설계 재검토

다음 읽기

#JUnit5 주제를 이어서 읽기

내가 JUnit5에 병렬화를 도입한 이야기 - 메서드 단위

JUnit5 Vintage 엔진에 메서드 단위 병렬화를 도입한 과정을 다뤘습니다. 고정 크기 스레드 풀에서 발생한 교착 상태를 ForkJoinPool로 해결했습니다.

데보션
데보션
백엔드

댓글 0개

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

댓글을 불러오는 중...