You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by er...@aftenposten.no on 2006/10/03 16:07:53 UTC

Automatic rollback with Spring for junit tests ?

Hi there!

 

I'm trying to set up some junit tests and want to take automatically a rollback for each test, in a Spring context.

 

Any clues how to set this property transactionManager (see below for the error) correctly in Spring ? 

 

I have tried to use the AbstractTransactionalSpringContextTests feature from Spring without any luck so far.

With the AbstractSpringContextTests it works fine.

 

 

Thanks,

Erlend

 

--

 

I get this error:

 

..

..

2006-10-03 15:53:01,734 [INFO      ] [main      ] org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@19836ed]

2006-10-03 15:53:01,734 [INFO      ] [main      ] org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@1afae45]

2006-10-03 15:53:01,734 [INFO      ] [main      ] org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [configurator,sqlMapClient,sqlMapClientTemplate,contactDao,dataSource]; root of BeanFactory hierarchy]

 

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'no.aftenposten.contactinfo.dao.ibatis.ContactDaoTest': Unsatisfied dependency expressed through bean property 'transactionManager': set this property value or disable dependency checking for this bean

            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.checkDependencies(AbstractAutowireCapableBeanFactory.java:995)

            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:856)

            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:227)

            at org.springframework.test.AbstractDependencyInjectionSpringContextTests.setUp(AbstractDependencyInjectionSpringContextTests.java:187)

            at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:32)

            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

--

 

My spring-dao.xml ...

 

     <!-- Section 4 -->

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

        <property name="configLocation">

            <value>classpath:sql/SqlMap-config.xml</value>

        </property>

        <property name="useTransactionAwareDataSource">

            <value>false</value>

        </property>

        <property name="dataSource">

            <ref bean="dataSource"/>

        </property>

    </bean>

 

    <!-- Section 5 -->

    <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">

        <property name="sqlMapClient">

            <ref bean="sqlMapClient"/>

        </property>

    </bean>

 

    <!-- Section 6 -->

    <bean id="contactDao" class="no.aftenposten.contactinfo.dao.ibatis.ContactDaoImpl">

        <property name="sqlMapClient">

            <ref bean="sqlMapClient"/>

        </property>

    </bean>

 

    <!-- javax.sql.DataSource supplied by Jakarta Commons Connection Pooling -->

    <bean id="dataSource" lazy-init="true" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName">

            <value>${application.db.driver}</value>

        </property>

        <property name="url">

            <value>${application.db.url}</value>

        </property>

        <property name="username">

            <value>${application.db.username}</value>

        </property>

        <property name="password">

            <value>${application.db.password}</value>

        </property>

    </bean>