본문 바로가기
728x90
반응형

런타임2

호출 순서 TestBootstrapInitializer, TestExecutionListener, setupSpec, ApplicationContextInitializer @SpringBootTest 를 쓰는 경우 컴파일타임 - Annotation Processor 동작 - 소스를 AST(Abstract Syntax Tree, 추상 구문 트리)로 변환 - (groovy의 경우) @GroovyASTTransformation 동작 - AST를 확인하여 바이트코드(.class 파일) 생성 런타임 - @ExtendWith 확인만. 테스트 클래스에 선언된 Extension을(메소드들) 미리 스캔하여 등록만 함.  - TestContext 초기화 시작 - TestContext 초기화 중간(순서대로)       -  TestBootstrapInitializer 동작       - TestExecutionListener 의 beforeTestClass() 메소드 동작       - (s.. 2025. 1. 10.
삽질. groovy, spock 통합테스트 적용 spock 통합테스트를 하려는 과정이다. 나는 특정 조건에 따라 테스트 클래스에 @SpringBootTest, @DataJpaTest 둘 중에 하나를 적용하고 싶었다. @Conditional 은 스프링 컨텍스트가 확인하는 것이기 때문에 스프링 컨텍스트가 생성된 이후에 동작한다. @SpringBootTest, @DataJpaTest 이것들이 스프링 컨텍스트를 만드는 어노테이션인데 스프링 컨텍스트가 없는 시점에 이걸 조건적으로 적용하고 싶은거니까 애초에 @Conditional 은 못쓴다. 컴파일타임에 어노테이션이 고정된다(소스코드가 정해진다)junit의 @ExtendWith 으로 조건적으로 액티브 프로필을 적용할 순 있다.@ExtendWith(ConditionalTestExtension.class) 으로 .. 2024. 12. 19.
728x90
반응형