JUnit 5 확장 모델

JUnit 5 확장 모델

"테스트 전에 데이터베이스를 준비하고, 실패한 테스트의 로그를 남기고 싶어" 같은 요구는 JUnit의 기본 동작만으로는 어려워요. JUnit 5에서는 이런 공통 관심사를 테스트 코드 밖으로 빼내 재사용하는 방법이 있는데, 바로 확장(Extension) 이에요. 이 페이지에서는 JUnit Jupiter 확장 모델이 어떤 구조인지 핵심 개념을 정리할게요.

출처: JUnit 5 User Guide — Extension Model

본문

JUnit 4에는 서로 다른 Runner, TestRule, MethodRule 확장 지점이 있었어요. 반면 JUnit Jupiter의 확장 모델은 하나의 일관된 개념으로 이뤄져 있어요. 바로 Extension API죠. 단, Extension 자체는 단순히 표식(marker) 인터페이스일 뿐이라는 점에 주의해야 해요.

Extension 하나를 기반으로 필요한 동작을 구현하고, 이를 어떻게 등록하느냐에 따라 테스트가 진화해요. 실제 동작은 @ExtendWith 같은 선언적 등록이나 @RegisterExtension 같은 프로그래밍 방식 등록으로 JUnit에 연결되죠. 정확히 어떤 등록 방법이 있는지, 그리고 각 확장 포인트가 무엇을 하는지는 더 알아보기 링크에서 이어서 볼 수 있어요.

더 알아보기