Hanbit the Developer

[Spring Boot] 커스텀 어노테이션으로 어노테이션 간소화하기 본문

Back-end

[Spring Boot] 커스텀 어노테이션으로 어노테이션 간소화하기

hanbikan 2024. 7. 28. 16:32

배경

제가 테스트를 위한 데이터베이스를 따로 두었기 때문에 테스트 코드 클래스마다 아래와 같이 액티브 프로필을 변경하여 DB URL을 변경시켜줘야 했습니다.

하지만 매번 @ActiveProfiles를 등록하는 것이 번거롭고 잊기 쉬워서 개선하고자 했습니다.

어노테이션 정의

아래와 같이 어노테이션을 정의해주었습니다.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@SpringBootTest
@ActiveProfiles("test")
public @interface ChadTest {
}

 

@Retention

정책에는 SOURCE, CLASS, RUNTIME가 있습니다. 런타임에 적용해야 하므로 RUNTIME을 지정해주었습니다

@Target

어노테이션을 붙일 수 있는 타겟을 설정할 수 있습니다. class UserServiceTest와 같은 클래스에 붙일 계획이므로 TYPE으로 지정하였습니다.

@SpringBootTest, @ActiveProfiles("test")

@ChadTest를 붙이면 위 어노테이션이 적용됩니다.

 

어노테이션 적용

 

References

https://stackoverflow.com/questions/39690094/spring-boot-default-profile-for-integration-tests

https://velog.io/@potato_song/Java-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EB%A7%8C%EB%93%A4%EA%B8%B0