반응형

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을 참조하도록

반응형

+ Recent posts