본문 바로가기
SpringBoot

호출 순서 TestBootstrapInitializer, TestExecutionListener, setupSpec, ApplicationContextInitializer

by 오렌지마끼야또 2025. 1. 10.
728x90
반응형

 

 

 

 

@SpringBootTest 를 쓰는 경우

 

컴파일타임

 - Annotation Processor 동작

 - 소스를 AST(Abstract Syntax Tree, 추상 구문 트리)로 변환
 - (groovy의 경우) @GroovyASTTransformation 동작

 - AST를 확인하여 바이트코드(.class 파일) 생성

 

런타임

 - @ExtendWith 확인만. 테스트 클래스에 선언된 Extension을(메소드들) 미리 스캔하여 등록만 함.

 - TestContext 초기화 시작

 - TestContext 초기화 중간(순서대로)

       -  TestBootstrapInitializer 동작

       - TestExecutionListener 의 beforeTestClass() 메소드 동작

       - (spock의 경우) setupSpec() 메소드 동작

 - TestContext 초기화 끝

 - ApplicationContext 초기화 시작

       - 맨 처음에 ApplicationContextInitializer 동작

 - ApplicationContext 초기화 중간

 - ApplicationContext 초기화 끝

 - @ExtendWith 에서 확인한 메소드들이 JUnit 생명주기 이벤트 중간중간에 동작함

 

 

 

 

 

 

TestBootstrapInitializer

 

 

 

 

TestExecutionListener

 

 

 

 

spock setupSpec()

 

 

 

 

ApplicationContextInitializer

resources/META-INF 아래 spring.factories 파일 생성 및 아래 내용 작성하여 등록

org.springframework.context.ApplicationContextInitializer=com.initializer.CustomApplicationContextInitializer

 

 

 

@GroovyASTTransformation

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글