-
테스트코드에 별도의 yml 연결하는 법spring 2025. 1. 30. 00:15
실행 코드에 사용하는 yml 파일과 별개인 테스트코드 전용 yml 파일을 만들었을때,
테스트코드에 해당 yml 파일을 연결하려면 아래 방법을 적용해야 한다.
일단, 테스트코드용 yml파일은 test.resources 하위 폴더에 넣는다
이제 테스트코드에 어노테이션만 추가하면 된다.
이때 추가 방법은 용도에 따라 두가지로 나뉜다.
방법1) application.yml 주입 x, application-test.yml만 주입하는 경우
@SpringBootTest(properties=~) 와 @ActiveProfiles 어노테이션을 추가한다.
@SpringBootTest(properties = "classpath:application-test.yml") @ActiveProfiles("test") public class TestClass { }
@ActiveProfiles는 profile 값을 구분해주는 어노테이션이다. "spring.profiles.active=값"인 profile만 가져와 적용시킨다.
위의 경우 spring.profiles.active=test인 yml만 가져온다.
* 첨언
yml 파일명이 "application-이름.yml"인 경우 그 파일은 spring.profiles.active=이름 으로 지정된다.
예를 들어, "application-test.yml" 인 경우 spring.profiles.active=test 으로 지정된다.
방법2) application.yml 주입 o application-test.yml도 주입하는 경우
@TestPropertySource와 @ActiveProfiles 어노테이션을 추가한다.
@SpringBootTest @TestPropertySource(locations = "classpath:application-test.yml") @ActiveProfiles("test") public class TestClass { }
@TestPropertySource는 적용할 yml이 어떤건지 지정하는 어노테이션이다. locations 값에 yml 파일명을 적는다.
이 경우
테스트 실행 시 기본적으로 application.yml이 먼저 로드되고, 이후에 application-test.yml이 추가로 로드된다.
이 과정에서 application-test.yml이 application.yml의 값을 덮어쓰기하는 구조다.하지만...
두번째 방법은 사용하지 않는게 좋다.
로컬에서는 잘 작동하지만 깃헙 액션에서는 덮어쓰기가 되지 않는다. (원인은 모르겠다..)
* 이후 도움될만한 링크
https://annyeong46.tistory.com/80
intelliJ에서 .env 파일 적용법
방법은 3가지가 있으며, 순서대로 시도해보자. 방법1) intelliJ에 내장되어있는 기능 사용하기이 방법은 IntelliJ Community edition 2024.3.2.1 버전 이후부터 지원하며,이하 버전에서는 지원하지 않을 수
annyeong46.tistory.com
'spring' 카테고리의 다른 글
intelliJ에서 .env 파일 적용법 (1) 2025.01.29 [spring boot] 도커 사용시 DevTools 적용하기 (0) 2025.01.05 [spring boot] QueryDSL 세팅하기 (0) 2025.01.03 [spring boot] 'Parameter 0 of constructor in ~ ', 'Consider defining a bean of type ~' 오류 해결 (0) 2024.11.20 react와 spring boot 간 연동하기 / 통신하기 (0) 2024.11.07