본문 바로가기
728x90
반응형

전체 글128

@GroovyASTTransformation 컴파일타임 조작, 어노테이션 동적 적용 목차build.gradle 추가한 내용구현하고 싶은 것, 그 이유AST 란?AST Transformation 메인 코드보기CompilePhaseAST Transformation 종류Local AST TransformationGlobal AST TransformationAST 로 어노테이션, 메소드 추가하기xxxApiTest.groovy Spock 테스트코드AST Transformation 풀코드   groovy 4.0spock 2.3사용했습니다.  🎈 build.gradle 추가한 내용 pluginsid 'groovy' allprojectsapply plugin: 'groovy' dependencies// groovytestImplementation 'org.apache.groovy:groovy-all.. 2025. 2. 24.
호출 순서 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.
spock @LocalServerPort 할당 시점, setup, setupSpec 차이 통합테스트이기 때문에 @SpringBootTest 를 사용하였고 때문에 전체 스프링 컨텍스트가 생성됩니다.  내용 선 요약  ❌그냥 바로 Url = "http://localhost:$port" 로 사용하면 안됩니다.java.lang.NumberFormatException: For input string: "null" 에러 발생위 그림에서 보았든 port는 테스트 컨텍스트가 모두 초기화 된 후에 할당됩니다.하지만 클래스 변수인 baseUrl은 테스트 컨텍스트 초기화 중에 할당되기 때문에 우리가 원하는 "http://localhost:8080" 형태가 아닌 "http://localhost:null" 이 되기때문에 에러가 발생합니다.  ⭕그럼 어떻게 해야 하느냐? setup() 메소드를 사용해야합니다.setu.. 2024. 11. 20.
swagger ui 에서 json 이쁘게 출력하기 (springfox 2.9.2 -> 3.0.0) 🎈 현재 swagger response 표시 방법, 문제점 (@ApiResponse)🎈 @ApiModelProperty 사용법과 단점🎈 @ApiResponse 를 사용해서 json response 이쁘게 만드는 방법 2가지🎈 springfox 2.9.2 -> 3.0.0 업그레이드🎈 추가 내용 (Springfox 와 springdoc)   현재 springboot 2.5.5, swagger 는 springfox 2.9.2 버전을 사용하고 있습니다. http://localhost:8080/swagger-ui.html 로 swagger ui 에 접속하면 각 api 마다 아래와 같이 response가 보입니다.    🎈 현재 swagger response 표시 방법, 문제점 (@ApiResponse).. 2024. 10. 30.
728x90
반응형