raghugowda
asked on
Unsatisfied dependency expressed through bean property & NoSuchBeanDefinitionException
I'm running JUnit Test Cases which are spring based. When I run a test case, I'm getting below exception:
Error creating bean with name 'com.xyz.TestActionConvert or': Unsatisfied dependency expressed through bean property 'dataSource': Set this property value or disable dependency checking for this bean.
org.springframework.beans. factory.Un satisfiedD ependencyE xception: Error creating bean with name 'com.xyz.TestActionConvert or': Unsatisfied dependency expressed through bean property 'dataSource': Set this property value or disable dependency checking for this bean.
at org.springframework.beans. factory.su pport.Abst ractAutowi reCapableB eanFactory .checkDepe ndencies(A bstractAut owireCapab leBeanFact ory.java:1 039)
at org.springframework.beans. factory.su pport.Abst ractAutowi reCapableB eanFactory .populateB ean(Abstra ctAutowire CapableBea nFactory.j ava:858)
at org.springframework.beans. factory.su pport.Abst ractAutowi reCapableB eanFactory .autowireB eanPropert ies(Abstra ctAutowire CapableBea nFactory.j ava:274)
at org.springframework.test.A bstractDep endencyInj ectionSpri ngContextT ests.injec tDependenc ies(Abstra ctDependen cyInjectio nSpringCon textTests. java:179)
at org.springframework.test.A bstractDep endencyInj ectionSpri ngContextT ests.prepa reTestInst ance(Abstr actDepende ncyInjecti onSpringCo ntextTests .java:158)
at org.springframework.test.A bstractSin gleSpringC ontextTest s.setUp(Ab stractSing leSpringCo ntextTests .java:88)
at org.springframework.test.C onditional TestCase.r unBare(Con ditionalTe stCase.jav a:69)
dataSource is defined in spring_context.xml as below:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Datasource -->
<bean id="dataSource" class="be.isabel.pdg.commo n.db.Basic Datasource ">
<property name="driverClassName"><va lue>${bank .jdbc.driv erclassnam e}</value> </property >
<property name="url"><value>${bank.j dbc.url}</ value></pr operty>
<property name="password"><value>${b ank.jdbc.p assword}</ value></pr operty>
<property name="username"><value>${b ank.jdbc.u sername}</ value>
</property>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework .orm.hiber nate3.Loca lSessionFa ctoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate .cfg.xml" />
<property name="hibernateProperties" >
<props>
<prop key="hibernate.c3p0.max_si ze">${bank .hibernate .c3p0.max_ size}</pro p>
<prop key="hibernate.c3p0.min_si ze">${bank .hibernate .c3p0.min_ size}</pro p>
<prop key="hibernate.c3p0.timeou t">${bank. hibernate. c3p0.timeo ut}</prop>
<prop key="hibernate.dialect">${ bank.hiber nate.diale ct}</prop>
<prop key="hibernate.show_sql">$ {bank.hibe rnate.show _sql}</pro p>
</props>
</property>
<property name="lobHandler"><ref bean="lobHandler"/></prope rty>
</bean>
</beans>
Also, I'm getting below exception for some other TestCases:
Exception in constructor: testGetCompanyNumbersForBa nkUserID (org.springframework.beans .factory.N oSuchBeanD efinitionE xception: No bean named 'bankUserRoutingDAOBean' is defined at org.springframework.beans. factory.su pport.Defa ultListabl eBeanFacto ry.getBean Definition (DefaultLi stableBean Factory.ja va:360) at org.springframework.beans. factory.su pport.Abst ractBeanFa ctory.getM ergedBeanD efinition( AbstractBe anFactory. java:914) at org.springframework.beans. factory.su pport.Abst ractBeanFa ctory.getB ean(Abstra ctBeanFact ory.java:2 41) at org.springframework.beans. factory.su pport.Abst ractBeanFa ctory.getB ean(Abstra ctBeanFact ory.java:1 60) at org.springframework.contex t.support. AbstractAp plicationC ontext.get Bean(Abstr actApplica tionContex t.java:757 ) sun.reflect.NativeConstruc torAccesso rImpl.newI nstance0(N ative Method) at sun.reflect.NativeConstruc torAccesso rImpl.newI nstance(Na tiveConstr uctorAcces sorImpl.ja va:39) at sun.reflect.DelegatingCons tructorAcc essorImpl. newInstanc e(Delegati ngConstruc torAccesso rImpl.java :27) at java.lang.reflect.Construc tor.newIns tance(Cons tructor.ja va:494) at junit.framework.TestSuite. createTest (TestSuite .java:131) at junit.framework.TestSuite. addTestMet hod(TestSu ite.java:1 14) at junit.framework.TestSuite. <init>(Tes tSuite.jav a:75) at org.junit.internal.runners .JUnit38Cl assRunner. <init>(JUn it38ClassR unner.java :69) at sun.reflect.NativeConstruc torAccesso rImpl.newI nstance0(N ative Method) at sun.reflect.NativeConstruc torAccesso rImpl.newI nstance(Na tiveConstr uctorAcces sorImpl.ja va:39) at sun.reflect.DelegatingCons tructorAcc essorImpl. newInstanc e(Delegati ngConstruc torAccesso rImpl.java :27) at java.lang.reflect.Construc tor.newIns tance(Cons tructor.ja va:494) at org.junit.internal.request s.ClassReq uest.build Runner(Cla ssRequest. java:33) at org.junit.internal.request s.ClassReq uest.getRu nner(Class Request.ja va:28) at junit.framework.JUnit4Test Adapter.<i nit>(JUnit 4TestAdapt er.java:28 ) at junit.framework.JUnit4Test Adapter.<i nit>(JUnit 4TestAdapt er.java:21 ) at sun.reflect.NativeConstruc torAccesso rImpl.newI nstance0(N ative Method) at sun.reflect.NativeConstruc torAccesso rImpl.newI nstance(Na tiveConstr uctorAcces sorImpl.ja va:39) at sun.reflect.DelegatingCons tructorAcc essorImpl. newInstanc e(Delegati ngConstruc torAccesso rImpl.java :27) at java.lang.reflect.Construc tor.newIns tance(Cons tructor.ja va:494) at org.apache.tools.ant.taskd efs.option al.junit.J UnitTestRu nner.run(J UnitTestRu nner.java: 387) at org.apache.tools.ant.taskd efs.option al.junit.J UnitTestRu nner.launc h(JUnitTes tRunner.ja va:912) at org.apache.tools.ant.taskd efs.option al.junit.J UnitTestRu nner.main( JUnitTestR unner.java :743) )
Please let me know if further info needed and let me know where its going wrong?
Error creating bean with name 'com.xyz.TestActionConvert
org.springframework.beans.
at org.springframework.beans.
at org.springframework.beans.
at org.springframework.beans.
at org.springframework.test.A
at org.springframework.test.A
at org.springframework.test.A
at org.springframework.test.C
dataSource is defined in spring_context.xml as below:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Datasource -->
<bean id="dataSource" class="be.isabel.pdg.commo
<property name="driverClassName"><va
<property name="url"><value>${bank.j
<property name="password"><value>${b
<property name="username"><value>${b
</property>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate
<property name="hibernateProperties"
<props>
<prop key="hibernate.c3p0.max_si
<prop key="hibernate.c3p0.min_si
<prop key="hibernate.c3p0.timeou
<prop key="hibernate.dialect">${
<prop key="hibernate.show_sql">$
</props>
</property>
<property name="lobHandler"><ref bean="lobHandler"/></prope
</bean>
</beans>
Also, I'm getting below exception for some other TestCases:
Exception in constructor: testGetCompanyNumbersForBa
Please let me know if further info needed and let me know where its going wrong?
ASKER
I have got both as below:
public class TestActionConvertor extends PBPersistTestCase {
public void testToDO() {
//code
}
public void testToDTO() {
//code
}
public class PBPersistTestCase extends PBTestCase {
public static final String SPRING_MYSQL_CONTEXT_FILES = "common_spring_context.xml;"
+ "junit_persistance_spring_context.xml;"
+ "persistance_spring_context.xml";
protected String[] getConfigLocations() {
System.out.println(SPRING_MYSQL_CONTEXT_FILES.split(";"));
return SPRING_MYSQL_CONTEXT_FILES.split(";");
}
public PBPersistTestCase() {
super();
}
public PBPersistTestCase(String testName) {
super(testName);
}
protected String getSpringContextFiles() {
return SPRING_MYSQL_CONTEXT_FILES;
}
}
PBTestCase extends ABCTestCase{.......}
ABCTestCase extends AbstractTransactionalDataSourceSpringContextTests{.......}
If you have no additional config for testing add
setAutowireMode(AUTOWIRE_B Y_NAME) as follows.
setAutowireMode(AUTOWIRE_B
protected String[] getConfigLocations() {
setAutowireMode(AUTOWIRE_BY_NAME);
System.out.println(SPRING_MYSQL_CONTEXT_FILES.split(";"));
return SPRING_MYSQL_CONTEXT_FILES.split(";");
}
ASKER
I tried as you said, but still same error: Error creating bean with name ..............
above you mentioned datasource is defined in spring_context.xml, is it also defined in one of those file: "common_spring_context.xml ;" + "junit_persistance_spring_ context.xm l;" + "persistance_spring_contex t.xml
and with the name "dataSource" (be careful of Case), you could also try AUTOWIRE_BY_TYPE, but if you've named your bean correct that should make no difference
and with the name "dataSource" (be careful of Case), you could also try AUTOWIRE_BY_TYPE, but if you've named your bean correct that should make no difference
ASKER
I had renamed junit_persistance_spring_c ontext.xml to spring_context.xml while posting, it contains "dataSource "defined.
I have checked the case, its correct "dataSource".
In persistance_spring_context .xml & common_spring_context.xml I have defined other beans like:
<bean id="addressedDocRefDAOBean " parent="abc" class="xyz"/>
I have checked the case, its correct "dataSource".
In persistance_spring_context
<bean id="addressedDocRefDAOBean
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You need to extend AbstractTransactionalDataS