@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
'SpringBoot' 카테고리의 다른 글
일단 써 (0) | 2024.12.19 |
---|---|
spock @LocalServerPort 할당 시점, setup, setupSpec 차이 (0) | 2024.11.20 |
swagger ui 에서 json 이쁘게 출력하기 (springfox 2.9.2 -> 3.0.0) (0) | 2024.10.30 |
@Transactional 롤백 (0) | 2024.07.22 |
[SpringBoot] 필터, 인터셉터 호출 흐름, 적용 방법 (0) | 2024.05.20 |
댓글