Friday 15 July 2011

java - Injection of autowired dependencies failed in jUnit test, works in controller -



java - Injection of autowired dependencies failed in jUnit test, works in controller -

i'm pretty stuck error , hope can point me in right direction. have multi module maven project. want unit test services i've created. funny thing i'm autowiring same service in controllers web service. works , no autowiring exception there. wrote next test check if works.

@runwith(springjunit4classrunner.class) @contextconfiguration(locations = {"classpath*:*applicationcontext.xml"}) public class productcontrollertest { @autowired ticketservice ticketsvc; @test public void equals() { // random test check if autowiring works list<ticket> tickets = ticketsvc.getall(); assertequals(tickets.size(), 2); } }

ticketservice :

public interface ticketservice extends genericservice<ticket> { .... }

ticketserviceimpl :

@service public class ticketserviceimpl implements ticketservice { @autowired private ticketdao dao; @override public list getall() { homecoming dao.getall(); } .... }

this how scan packages in applicationcontext.xml :

<context:component-scan base-package="nl.chess.mticketing.*"/> <mvc:annotation-driven />

it produces next error:

org.springframework.beans.factory.beancreationexception: error creating bean name 'productcontrollertest': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: nl.chess.mticketing.backend.services.ticketservice productcontrollertest.ticketsvc; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:326) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1204) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.autowirebeanproperties(abstractautowirecapablebeanfactory.java:385) @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.injectdependencies(dependencyinjectiontestexecutionlistener.java:110) @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.preparetestinstance(dependencyinjectiontestexecutionlistener.java:75) @ org.springframework.test.context.testcontextmanager.preparetestinstance(testcontextmanager.java:331) @ org.springframework.test.context.junit4.springjunit4classrunner.createtest(springjunit4classrunner.java:213) @ org.springframework.test.context.junit4.springjunit4classrunner$1.runreflectivecall(springjunit4classrunner.java:290) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.springframework.test.context.junit4.springjunit4classrunner.methodblock(springjunit4classrunner.java:292) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:233) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:87) @ 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:176) @ org.apache.maven.surefire.junit4.junit4testset.execute(junit4testset.java:53) @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:123) @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:104) @ 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:483) @ org.apache.maven.surefire.util.reflectionutils.invokemethodwitharray(reflectionutils.java:164) @ org.apache.maven.surefire.booter.providerfactory$providerproxy.invoke(providerfactory.java:110) @ org.apache.maven.surefire.booter.surefirestarter.invokeprovider(surefirestarter.java:175) @ org.apache.maven.surefire.booter.surefirestarter.runsuitesinprocesswhenforked(surefirestarter.java:107) @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:68) caused by: org.springframework.beans.factory.beancreationexception: not autowire field: nl.chess.mticketing.backend.services.ticketservice productcontrollertest.ticketsvc; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:542) @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:87) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:323) ... 32 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:1261) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:1009) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:904) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:514) ... 34 more org.springframework.beans.factory.beancreationexception: error creating bean name 'productcontrollertest': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: nl.chess.mticketing.backend.services.ticketservice productcontrollertest.ticketsvc; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:326) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1204) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.autowirebeanproperties(abstractautowirecapablebeanfactory.java:385) @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.injectdependencies(dependencyinjectiontestexecutionlistener.java:110) @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.preparetestinstance(dependencyinjectiontestexecutionlistener.java:75) @ org.springframework.test.context.testcontextmanager.preparetestinstance(testcontextmanager.java:331) @ org.springframework.test.context.junit4.springjunit4classrunner.createtest(springjunit4classrunner.java:213) @ org.springframework.test.context.junit4.springjunit4classrunner$1.runreflectivecall(springjunit4classrunner.java:290) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.springframework.test.context.junit4.springjunit4classrunner.methodblock(springjunit4classrunner.java:292) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:233) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:87) @ 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:176) @ org.apache.maven.surefire.junit4.junit4testset.execute(junit4testset.java:53) @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:123) @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:104) @ 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:483) @ org.apache.maven.surefire.util.reflectionutils.invokemethodwitharray(reflectionutils.java:164) @ org.apache.maven.surefire.booter.providerfactory$providerproxy.invoke(providerfactory.java:110) @ org.apache.maven.surefire.booter.surefirestarter.invokeprovider(surefirestarter.java:175) @ org.apache.maven.surefire.booter.surefirestarter.runsuitesinprocesswhenforked(surefirestarter.java:107) @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:68) caused by: org.springframework.beans.factory.beancreationexception: not autowire field: nl.chess.mticketing.backend.services.ticketservice productcontrollertest.ticketsvc; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:542) @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:87) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:323) ... 32 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [nl.chess.mticketing.backend.services.ticketservice] found dependency: expected @ to the lowest degree 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} @ org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:1261) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:1009) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:904) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:514) ... 34 more

solved :

as suggested in comments below :

@contextconfiguration(locations = {"classpath*:*applicationcontext.xml"})

this notation not give feedback applicationcontext ( if file found ). goes straight " can't autowire exception". actual problem applicationcontext not found. changed notation :

@contextconfiguration("classpath:/meta-inf/applicationcontext.xml")

after changed notation got more applicationcontext errors, able debug those!

java spring-mvc jpa junit

No comments:

Post a Comment