본문 바로가기
  • 문헌정보학도가 개발도 한다구요??
오류가 싫어/JAVA

[Spring] Controller를 Junit에서 테스트 할때 java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I 오류가 발생될 경우

by 개발하는사서 2021. 8. 23.

@Controller 어노테이션을 사용한 클래스를 테스트 하고자 Junit을 사용했는데 저런 오류가 나온다. 

근데 뷰를 만들어서 톰캣으로 실행하면 그건 된다... 

테스트 코드
눈돌아 가는 에러 스택

근본적 원인은 Spring Legacy Project에선 서블릿 버전을 기본으로 2.5를 사용하는데, MockMvc 같은 경우는 서블릿 버전 3.0이상을 사용해야 작동이 된다. 그런데 이상한 점은 내 pom.xml에는 이미 서블릿 3.0이상 버전을 사용하고 있었던것.

javax.servlat-api가 3.1.0인걸 확인

알고보니 위에 아티팩트 servlet-api가 적용되서 mockmvc가 작동되지 않았던 것 같다.

해당 사진 처럼 주석처리를 하거나 지우면 작동한다.

머리빠질것 같다. 

댓글