java - Testing Spring managed servlet -


i need test servlet, working fine now.

the servlet needs use spring service, modified way:

springbeanautowiringsupport.processinjectionbasedonservletcontext(     this, config.getservletcontext()); // imageservlet.java line 49 

after migration spring 4, test broke , throws exception:

java.lang.illegalstateexception: no webapplicationcontext found: no contextloaderlistener registered? @ org.springframework.web.context.support.webapplicationcontextutils.     getrequiredwebapplicationcontext(webapplicationcontextutils.java:84) @ org.springframework.web.context.support.springbeanautowiringsupport.     processinjectionbasedonservletcontext(springbeanautowiringsupport.java:107) @ package.imageservlet.init(imageservlet.java:49) @ in.nasv.utils.imageservlettest.accessingimageviahttp(imageservlettest.java:45) 

here portion of code of imageservlettest:

// prepare servlet instance mockservletconfig config = new mockservletconfig(     new mockservletcontextpatched()); imageservlet servlet = new imageservlet(); servlet.init( config ); // imageservlettest, line 45 

and patched class (is not patched now):

public class mockservletcontextpatched extends mockservletcontext{ } 

what supposed avoid "illegalstateexception: no webapplicationcontext found: no contextloaderlistener registered?" ?

i found solution. clear enough, solution.

now servlet initialization is:

mockservletcontext servletcontext = new mockservletcontextpatched(); mockservletconfig config = new mockservletconfig( servletcontext ); imageservlet servlet = new imageservlet();  classpathxmlapplicationcontext appcontext = new classpathxmlapplicationcontext( "spring-data-app-context.xml" ); defaultlistablebeanfactory dlbf = new defaultlistablebeanfactory(appcontext.getbeanfactory()); genericwebapplicationcontext gwac = new genericwebapplicationcontext(dlbf);         servletcontext.setattribute(genericwebapplicationcontext.root_web_application_context_attribute, gwac); gwac.setservletcontext(servletcontext); gwac.refresh();  servlet.init( config ); 

preparing request , response in standard way:

mockhttpservletresponse response = new mockhttpservletresponse();  url serverurl = new url( propertyextendedservice.getserveraddress(true) ); mockhttpservletrequest request = new mockhttpservletrequest(); request.setrequesturi( "/what-you-want" ); request.setpathinfo( "/" + test_image ); request.setcontenttype("image/jpeg"); request.addheader("accept", "image/jpeg;image/jpg;" ); 

final step call filter , assert returned values:

servlet.doget( request, response ); assertequals( response.getstatus(), 200 ); // assert want 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -