[Spring Boot] 테스트 환경 application.yml 분리
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 값으로 입력한다.
테스트 실행 시 다음과 같이 설정한 환경정보로 정상동작 하는 것을 확인할 수 있다.