Spring/Spring Boot

[Spring Boot] 테스트 환경 application.yml 분리

yoon_seon 2023. 4. 5. 23:12

 

 

STS에서 테스트 코드 작성 중 테스트 실행환경을 분리하기 위해 test/resources 경로에 application.yml 파일을 생성하였다.

JUnit5 테스트 실행 시  test/resources 경로에 application.yml 파일을 생성하였는데도 불구하고 해당 파일을 인식하지 못하고

main/resources 경로의 resources application.yml 파일로 실행되었다.

 

???

 

찾아보니 intelliJ는 테스트에서 실행하면 test/resources/application.yml을 먼저 읽게되지만 다른 IDE에서는 아닌 것 같다.

 

intelliJ가 아닌 타 IDE에서는 다음과 같은 추가 설정이 필요하다.

 

1. application.yml 추가 설정 (main/resources/application.yml)

 

main/resources/application.yml에 spring.config.activate.on-profile : default 설정 추가

 

 

2. application.yml 추가 설정 (test/resources/application.yml)

test/resources/application.yml에 spring.config.activate.on-profile : test 설정 추가

(spring.config.activate.on-profile의 값을 test가 아닌 다른 값으로 설정해도 상관없다.)

 

Spring Boot 2.4 버전 이후 spring.profiles는 사라지게 되었다. 
Spring Boot 2.4 버전 이후 경우 spring.config.activate.on-profile을 사용해야한다.

 

 

3. 테스트 클래스에 @ActiveProfiles 어노테이션 추가

@SpringBootTest
@Transactional
@ActiveProfiles("test")
class xxxxTest {
	...
}

테스트 클래스에 @ActivProfiles 어노테이션을 추가하고 value값을 test/resources/application.yml에서 설정한spring.config.activate.on-profile 값으로 입력한다.

 

 

 

테스트 실행 시 다음과 같이 설정한 환경정보로 정상동작 하는 것을 확인할 수 있다.