반응형

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

반응형
반응형

스프링 부트를 서버에 올리기 전 local 환경에서 실행하던 도중 

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping

이런 에러가 발생했다.

 

구글링을 하던 도중 JRE에 servlet.jar를 포함하고 있는지 확인해보라는 글을 보았고, 포함되어 있었다.

 

그리고 jre -> lib -> ext 에 servlet.jar를 삭제하니 잘 되어부렀당~~

 

아마 빌드를 하는 과정에서 내장 tomcat에 있는 servlet과 충돌이 있었나 보다~

 

쾅쾅

반응형
반응형

JAR_NAME=$(ls $REPOSITORY/ |grep 'bootTest' |tail -n 1)

이부분에서 bootTest를 처음에는 git의 프로젝트 명을 적어서 war 파일이 실행되지 않았다

저 부분은 실제로 eclipse ,sts로 생성한 프로젝트 명을 적어야 한다.

이유는 war 파일은 프로젝트의 이름으로 생성되기 때문~

 

허접한 실수였당 ㅜㅜ 


추가

서버에 수정하여 올린게 자꾸 bootstrap이랑 jquery가 적용할 수 없다는 메세지가 나와서 한참 찾다가

deploy.sh를 실행하고 보니 이미 실행중인 app이 있음에도 이런식으로 나왔다. 

결론은 저 부분에 이름을 잘못 써서 찾지 못했던 것이었던것이어떤것이다...

git 프로젝트 이름을 썼었다.. 실제 spring프로젝트 이름을 쓰는것...

하아.. ㅜ ㅜ

반응형

+ Recent posts