java - MockMVC Test reports does not declare any static, non-private, non-final, inner classes annotated with @Configuration -
i trying call ajax method via junit test case. have referred truck load of questions point. still getting
testmockmvc not declare static, non-private, non-fin al, inner classes annotated @configuration.
my ajax call is
@requestmapping(value = { "/saveentityajax", "/modifyentityajax" }, method = requestmethod.post) public @responsebody string saveorupdateentityajax( @requestparam(value = "id") string id, @requestparam(value = "number") string number, httpservletrequest httpservletrequest) { my junit test case is
package test.controllers; import static org.springframework.security.test.web.servlet.setup.securitymockmvcconfigurers.springsecurity; import org.junit.before; import org.junit.test; import org.junit.runner.runwith; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import org.springframework.context.annotation.configuration; import org.springframework.http.mediatype; import org.springframework.test.context.contextconfiguration; import org.springframework.test.context.junit4.springjunit4classrunner; import org.springframework.test.context.web.annotationconfigwebcontextloader; import org.springframework.test.context.web.webappconfiguration; import org.springframework.test.web.servlet.mockmvc; import org.springframework.test.web.servlet.mvcresult; import org.springframework.test.web.servlet.request.mockmvcrequestbuilders; import org.springframework.test.web.servlet.setup.mockmvcbuilders; import org.springframework.web.context.webapplicationcontext; import com.mnox.database.pojo.wrapper.v2.vehiclemasterpojowrapper.vehiclepurpose; @configuration @runwith(springjunit4classrunner.class) @contextconfiguration(loader=annotationconfigwebcontextloader.class) @webappconfiguration public class testmockmvc { @autowired private webapplicationcontext context; private mockmvc mvc; @before public void setup() { mvc = mockmvcbuilders.webappcontextsetup(context).apply(springsecurity()).build(); } @test public void test1createclient() { saveorupdatevehicleajaxrequest vehicle = new saveorupdatevehicleajaxrequest("123", "ka-02-1234", 12, vehiclepurpose.main_vehicle.name(), "some alias"); try { mvcresult mvcresult = mvc.perform(mockmvcrequestbuilders.post("/savevehicleajaxmethod") .contenttype(mediatype.application_json).accept(mediatype.application_json)).andreturn(); mvcresult.getmodelandview(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } private class saveorupdateentityajaxrequest { private string id; private string number; public saveorupdateentityajaxrequest(string id, string number) { super(); this.id = id; this.number = number; } public string getid() { return id; } public void setid(string id) { this.id = id; } public string getnumber() { return number; } public void setnumber(string number) { this.number = number; } } } i getting following errors
info : org.springframework.test.context.support.annotationconfigcontextloaderutils - not detect default configuration classes test class [test.controllers.testmockmvc]: testmockmvc not declare static, non-private, non-final, inner classes annotated @configuration. info : org.springframework.test.context.web.webtestcontextbootstrapper - loaded default testexecutionlistener class names location [meta-inf/spring.factories]: [org.springframework.security.test.context.support.withsecuritycontexttestexecutionlistener, org.springframework.boot.test.mock.mockito.mockitotestexecutionlistener, org.springframework.boot.test.mock.mockito.resetmockstestexecutionlistener, org.springframework.test.context.web.servlettestexecutionlistener, org.springframework.test.context.support.dependencyinjectiontestexecutionlistener, org.springframework.test.context.support.dirtiescontexttestexecutionlistener, org.springframework.test.context.transaction.transactionaltestexecutionlistener, org.springframework.test.context.jdbc.sqlscriptstestexecutionlistener] info : org.springframework.test.context.web.webtestcontextbootstrapper - using testexecutionlisteners: [org.springframework.test.context.web.servlettestexecutionlistener@7f3b84b8, org.springframework.test.context.support.dependencyinjectiontestexecutionlistener@57a3af25, org.springframework.test.context.support.dirtiescontexttestexecutionlistener@2b662a77, org.springframework.test.context.transaction.transactionaltestexecutionlistener@7f0eb4b4, org.springframework.test.context.jdbc.sqlscriptstestexecutionlistener@5c33f1a9, org.springframework.security.test.context.support.withsecuritycontexttestexecutionlistener@1623b78d, org.springframework.boot.test.mock.mockito.mockitotestexecutionlistener@c8c12ac, org.springframework.boot.test.mock.mockito.resetmockstestexecutionlistener@6adbc9d] info : org.springframework.web.context.support.genericwebapplicationcontext - refreshing org.springframework.web.context.support.genericwebapplicationcontext@3eb25e1a: startup date [mon sep 11 13:11:05 ist 2017]; root of context hierarchy info : org.springframework.web.context.support.genericwebapplicationcontext - closing org.springframework.web.context.support.genericwebapplicationcontext@3eb25e1a: startup date [mon sep 11 13:11:05 ist 2017]; root of context hierarchy edit : jar's using are
spring-boot-test-1.4.0.release.jar spring-security-test-4.0.0.release.jar spring-context-3.1.0.release.jar spring-test-4.1.9.release.jar spring-core-3.1.0.release.jar spring-web-3.1.0.release.jar spring-expression-3.1.0.release.jar spring-webmvc-3.1.0.release.jar edit : folder structure
src/main/java/test/controllers/testmockmvc.java src/main/webapp/web-inf/web.xml src/main/webapp/web-inf/spring/root-context.xml src/main/webapp/web-inf/spring/appservlet/servlet-context.xml edit : have partial answer. have modified code solve issue reported in question. although stuck @ different point, answering question partially.
change 1
@configuration @runwith(springjunit4classrunner.class) @contextconfiguration({ // "file:src/main/webapp/web-inf/web.xml" "file:src/main/webapp/web-inf/spring/root-context.xml", "file:src/main/webapp/web-inf/spring/appservlet/servlet-context.xml" }) @webappconfiguration public class testmockmvc { @autowired filterchainproxy springsecurityfilterchain; @autowired private webapplicationcontext context; private mockmvc mvc; @before public void setup() { mvc = mockmvcbuilders.webappcontextsetup(context) .apply(securitymockmvcconfigurers.springsecurity(springsecurityfilterchain)).build(); } @test public void test1createclient() { saveorupdateentityajaxrequest vehicle = new saveorupdateentityajaxrequest("123", "ka-02-1234"); mvcresult mvcresult = null; try { mockhttpservletrequestbuilder request = mockmvcrequestbuilders.post("/saveentityajaxmethod") .content(new gson().tojson(vehicle).getbytes()).contenttype(mediatype.application_json) .accept(mediatype.application_json); mvcresult = mvc.perform(request).andreturn(); mvcresult.getmodelandview(); } catch (exception e) { e.printstacktrace(); } } change 2
in servlet-context.xml added following lines.
<bean id="springsecurityfilterchain" class="org.springframework.security.web.filterchainproxy"> <!-- properties --> </bean> exception getting now
info : org.springframework.test.web.servlet.testdispatcherservlet - frameworkservlet '': initialization started info : org.springframework.test.web.servlet.testdispatcherservlet - frameworkservlet '': initialization completed in 67 ms java.lang.nullpointerexception @ org.springframework.security.web.filterchainproxy.getfilters(filterchainproxy.java:223) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ org.springframework.util.methodinvoker.invoke(methodinvoker.java:269) @ org.springframework.test.util.reflectiontestutils.invokemethod(reflectiontestutils.java:307) @ org.springframework.security.test.web.support.webtestutils.findfilter(webtestutils.java:118) @ org.springframework.security.test.web.support.webtestutils.getsecuritycontextrepository(webtestutils.java:57) @ org.springframework.security.test.web.servlet.request.securitymockmvcrequestpostprocessors$securitycontextrequestpostprocessorsupport.save(securitymockmvcrequestpostprocessors.java:434) @ org.springframework.security.test.web.servlet.request.securitymockmvcrequestpostprocessors$testsecuritycontextholderpostprocessor.postprocessrequest(securitymockmvcrequestpostprocessors.java:511) @ org.springframework.test.web.servlet.request.mockhttpservletrequestbuilder.postprocessrequest(mockhttpservletrequestbuilder.java:686) @ org.springframework.test.web.servlet.mockmvc.perform(mockmvc.java:137) @ test.controllers.testmockmvc.test1createclient(testmockmvc.java:61) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:50) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:47) @ 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:75) @ org.springframework.test.context.junit4.statements.runaftertestmethodcallbacks.evaluate(runaftertestmethodcallbacks.java:86) @ org.springframework.test.context.junit4.statements.springrepeat.evaluate(springrepeat.java:70) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:325) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:224) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:83) @ org.junit.runners.parentrunner$3.run(parentrunner.java:290) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:71) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:288) @ org.junit.runners.parentrunner.access$000(parentrunner.java:58) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:268) @ org.springframework.test.context.junit4.statements.runbeforetestclasscallbacks.evaluate(runbeforetestclasscallbacks.java:61) @ org.springframework.test.context.junit4.statements.runaftertestclasscallbacks.evaluate(runaftertestclasscallbacks.java:70) @ org.junit.runners.parentrunner.run(parentrunner.java:363) @ org.springframework.test.context.junit4.springjunit4classrunner.run(springjunit4classrunner.java:163) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:86) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:459) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:678) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:382) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:192)
Comments
Post a Comment