Spring mvc test - testing controllers with Autowired annotations -


i trying create tests controllers using spring test framework.

following article: http://blog.springsource.org/2012/11/12/spring-framework-3-2-rc1-spring-mvc-test-framework/ created test class

@runwith(springjunit4classrunner.class) @webappconfiguration @contextconfiguration("classpath:testcontext.xml") public class servicerequestcontrollertest {      @autowired     private webapplicationcontext wac;      @autowired     private servicerequestcontroller productcontroller;      @autowired     private wsservicerequestio wsservicerequestio;     @autowired     private open311responsemarshaller open311responsemarshaller;     @autowired     private open311getquerystringparser open311getquerystringparser;     @autowired     private open311postquerystringparser open311postrequestparser;     @autowired     private open311responsefactory responsefactory;      private mockmvc mockmvc;      @before     public void setup() {         this.mockmvc = mockmvcbuilders.webappcontextsetup(this.wac).build();     }      @test     public void testtest() throws exception {         this.mockmvc.perform(get("/requests"));     } } 

and testcontext.xml

<beans xmlns="http://www.springframework.org/schema/beans"     xmlns:context="http://www.springframework.org/schema/context"     xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"     xsi:schemalocation="         http://www.springframework.org/schema/beans              http://www.springframework.org/schema/beans/spring-beans-3.2.xsd         http://www.springframework.org/schema/context          http://www.springframework.org/schema/context/spring-context-3.2.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">      <bean class="org.mockito.mockito" factory-method="mock">         <constructor-arg value="utils.webservice.wsservicerequestio" />     </bean>      <bean class="org.mockito.mockito" factory-method="mock">         <constructor-arg value="open311.model.open311responsemarshaller" />     </bean>      <bean class="org.mockito.mockito" factory-method="mock">         <constructor-arg             value="open311.utils.open311postquerystringparser" />     </bean>      <bean class="org.mockito.mockito" factory-method="mock">         <constructor-arg             value="open311.utils.open311getquerystringparser" />     </bean>      <bean class="org.mockito.mockito" factory-method="mock">         <constructor-arg             value="open311.model.open311responsefactory" />     </bean>       <context:component-scan base-package="open311.controller" />     <mvc:annotation-driven />      <mvc:resources mapping="/services*" location="/resources/" />    </beans> 

now, when run tests lot of messages like:

2013-04-19 14:33:34 info  generictyperesolver:216 - not determine target type type argument [t] method [public static <t> t org.mockito.mockito.mock(java.lang.class<t>)]. 

so there problem inferring types mockito, still when enter debug mode , inspect controller can see objects injected correctly. (i using @autowire annotation in controller).

anyway, when try run test getting test failure because of

org.springframework.web.util.nestedservletexception: handler processing failed; nested exception java.lang.nosuchmethoderror: javax/servlet/http/httpservletresponse.getcontenttype()ljava/lang/string;     @ org.springframework.web.servlet.dispatcherservlet.triggeraftercompletionwitherror(dispatcherservlet.java:1259)     @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:945)     @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:856)     @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:920)     @ org.springframework.web.servlet.frameworkservlet.doget(frameworkservlet.java:816)     @ javax.servlet.http.httpservlet.service(httpservlet.java:740)     @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:801)     @ org.springframework.test.web.servlet.testdispatcherservlet.service(testdispatcherservlet.java:66)     @ javax.servlet.http.httpservlet.service(httpservlet.java:853)     @ org.springframework.mock.web.mockfilterchain$servletfilterproxy.dofilter(mockfilterchain.java:168)     @ org.springframework.mock.web.mockfilterchain.dofilter(mockfilterchain.java:136)     @ org.springframework.test.web.servlet.mockmvc.perform(mockmvc.java:134)     @ open311.controller.servicerequestcontrollertest.testtest(servicerequestcontrollertest.java:58)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:48)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:37)     @ java.lang.reflect.method.invoke(method.java:600)     @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47)     @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12)     @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44)     @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17)     @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26)     @ org.springframework.test.context.junit4.statements.runbeforetestmethodcallbacks.evaluate(runbeforetestmethodcallbacks.java:74)     @ org.springframework.test.context.junit4.statements.runaftertestmethodcallbacks.evaluate(runaftertestmethodcallbacks.java:83)     @ org.springframework.test.context.junit4.statements.springrepeat.evaluate(springrepeat.java:72)     @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:231)     @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:88)     @ org.junit.runners.parentrunner$3.run(parentrunner.java:238)     @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63)     @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236)     @ org.junit.runners.parentrunner.access$000(parentrunner.java:53)     @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229)     @ org.springframework.test.context.junit4.statements.runbeforetestclasscallbacks.evaluate(runbeforetestclasscallbacks.java:61)     @ org.springframework.test.context.junit4.statements.runaftertestclasscallbacks.evaluate(runaftertestclasscallbacks.java:71)     @ org.junit.runners.parentrunner.run(parentrunner.java:309)     @ org.springframework.test.context.junit4.springjunit4classrunner.run(springjunit4classrunner.java:174)     @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50)     @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:467)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:683)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:390)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:197) 

what source of problem? think followed every step tutorial.

the nosuchmethoderror indicates have incompatible version of servlet api on test classpath.

also, you'll need include spring mvc configuration bean definition servicerequestcontroller within test xml config, either directly, via import, or declaring separate xml config file via @contextconfiguration.


Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -