2013-12-25 5 views
0

Я очень новичок в весеннем тестировании.весенний тест и управление транзакциями

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("/applicationContextTest.xml") 
public class joinTest { 
@Mock 
@Autowired 
private AccountDAO DAO; 

@Test 
public void testMethod() 
{ 
    (DAO).getJoin(); 
} 

} 

Тест жалуется на transactionManager, который у меня есть в моем приложенииContextTest. Очевидно, я запускаю это из контейнера. Я не знаю, как обрабатывать транзакции в контексте Spring Test.

<context:component-scan base-package="com.abstinence.Logic"/> 
<context:annotation-config/> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
    <property name="url" value="jdbc:hsqldb:hsql://xx.xx.xx.xx/testdb"/> 
    <property name="username" value="SA"/> 
    <property name="password" value=""/> 
</bean> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="packagesToScan" value="com.abstinence.Logic"/> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key ="dialect">org.hibernate.dialect.HSQLDialect</prop> 
     </props> 
    </property> 
</bean> 

<tx:advice id="txAdvice"> 
    <tx:attributes> 
     <tx:method name="*"/> 
    </tx:attributes> 
</tx:advice> 

<aop:config> 
    <aop:pointcut id="hibernateDAOOperation" expression="execution(* com.abstinence.Logic.AccountDAO.*(..))"/> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="hibernateDAOOperation"/> 
</aop:config> 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

Точная ошибка, я получаю это:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accountDAO' defined in file [/home/user/NetBeansProjects/WebAbstinenceMaven/target/classes/com/abstinence/Logic/AccountDAO.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txAdvice': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [applicationContextTest.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 

Я спутать в течение нескольких дней, пытаясь понять это. Может ли кто-то указать в правильном направлении?

ответ

0

Возможно, это связано с проблемами совместимости Spring с Hibernate 4.3.0.Beta1 и более поздними сообщениями here.
Если это проблема, перейдите на Hibernate 4.1.7. Final должен решить проблему.

Смежные вопросы