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 값으로 입력한다.
테스트 실행 시 다음과 같이 설정한 환경정보로 정상동작 하는 것을 확인할 수 있다.
'Spring > Spring Boot' 카테고리의 다른 글
@ConfigurationProperties으로 프로퍼티값 바인딩하기 (0) | 2024.02.07 |
---|---|
[Spring Boot] HTTP Status Code 제어 및 Exception Handling (0) | 2023.06.21 |
[Spring] 빈 스코프 (0) | 2023.03.31 |
[Spring] 빈 생명주기 콜백 (0) | 2023.03.29 |
[Spring] 의존관계 자동주입 (0) | 2023.03.27 |
댓글