서블릿을 테스트해야하는데, 이제는 정상적으로 작동합니다.Spring 관리 서블릿 테스트하기
서블릿은 봄 서비스를 사용해야하므로 해당이 방법 수정 :
마이그레이션 후SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(
this, config.getServletContext()); // ImageServlet.java line 49
4 봄하기를, 시험은 파산 현재는이 예외가 발생합니다 :
java.lang.IllegalStateException:
No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.context.support.WebApplicationContextUtils.
getRequiredWebApplicationContext(WebApplicationContextUtils.java:84)
at org.springframework.web.context.support.SpringBeanAutowiringSupport.
processInjectionBasedOnServletContext(SpringBeanAutowiringSupport.java:107)
at package.ImageServlet.init(ImageServlet.java:49)
at in.nasv.utils.ImageServletTest.accessingImageViaHttp(ImageServletTest.java:45)
을 여기
는 ImageServletTest의 코드의 부분이다 :
// prepare servlet instance
MockServletConfig config = new MockServletConfig(
new MockServletContextPatched());
ImageServlet servlet = new ImageServlet();
servlet.init(config); // ImageServletTest, line 45
및이 CLA를 패치 의 (실제로 지금은 패치되지 않음) :이 피하기 위해 어떻게해야하고 무엇
public class MockServletContextPatched extends MockServletContext{ }
"찾을 수 없습니다의 WebApplicationContext : IllegalStateException이?가 등록되어 있지의 ContextLoaderListener을" ?
실제로 Servlet을 테스트하기 위해'init()'메소드를 호출해야합니까? 그렇지 않다면 테스트에서'SpringBeanAutowiringSupport'에 의존하는 대신 Servlet을 인스턴스화하고 의존성을 수동으로 인젝션하는 것이 좋다. –
대단한 접근 방식이지만 내 경우에는 적용 할 수 없습니다.Spring MockServletContext는 매우 제한적인 기능을 가지고있다. (setter와 getter는 고정 된 값만을 리턴한다. init()을 통해서만 적용 할 수있다. – joro
Spring의'MockServletContext' **에는 setter가있다. Spring의'MockServletContext'에서 제한 사항은 무엇이라고 생각하십니까? 커스텀'MockServletContextPatched'에 특별한 점은 무엇입니까? –