SpringBoot 프로젝트는 자동으로 프로젝트에 properties 파일이 생성되고
이 파일로 local , real ,test 환경을 셋팅할 수 있다.
근데 test/resources/ 폴더에 properties 파일 또는 yml 파일이 없으면 자동으로
main/resources/ 폴더에 있는 properties 또는 yml 파일을 참조하게 된다.
실제 운영하는 코드와 테스트 환경을 분리해야 되는게 맞기 때문에 설정 파일을 따로 작성해야 된다.
그래서 test/resources/ 에 applicationt.yml을 작성 했다.
그런데 Junit 테스트를 실행하면 자꾸 main/resources/에 있는 설정 파일을 참조하는 것이다...
구글링을 통해 여러방법을 시도해 보았지만 안됐고..
@TestPropertySource("classpath:applicationtest.yml")
테스트 클래스에 위에 코드를 작성하니 정상적으로 참조가 됐다..
다른 분들은 자동으로 test/resources/*.properties 를 참조하게 된다던데 ㅜ ㅜ 왜 난 안될까...
위에 썼던 것대로 하면 안된다 .. . . . .
그래서 별 xx을 다해봤고 방법은
application-local.yml -- 로컬 PC
application-dev.yml -- 개발서버
application-uat.yml -- UAT(Staging)
application-live.yml -- Live(운영)
이런식으로 나누어서 사용한단다...
그래성 @TestPropertySource(properties = { "spring.config.location=classpath:application-test.yml" })
이런식으로 참조한단다..
나는 이렇게 했을 때
@Test
public void Profile확인() {
//when
String profile =this.restTemplate.getForObject("/profile",String.class);
//then
assertThat(profile).isEqualTo("local");
}
이 코드를 실행하면 UnsatisfiedDependencyException 이런 오류를 던진다..
는 @SpringBootTest(webEnvironment =WebEnvironment.RANDOM_PORT)
이 webEnvironment를 설정 안해줘서 글탕..
결론
@TestPropertySource(properties = { "spring.config.location=classpath:application-test.yml" })
로 다른 yml을 참조하도록