簡體   English   中英

春季測試和交易管理

[英]spring test and transaction management

我是春季測試的新手。

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

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

}

該測試抱怨我的applicationContextTest中具有transactionManager。 顯然我正在用容器運行它。 我真的不知道如何在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;

我已經迷惑了幾天試圖解決這個問題。 有人可以指出正確的方向嗎?

這可能是由於春季與Hibernate 4.3.0.Beta1並報告兼容性問題新在這里
如果這是問題所在,則降級到Hibernate 4.1.7.Final應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM