2012-02-17 2 views
3

Я использую встроенную базу данных Spring (по умолчанию DB HSQLDB) для запуска некоторых модульных тестов. У меня есть следующие в моем контексте:Тесты HSQLDB/Spring не откатываются назад

тест
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManger"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

<jdbc:embedded-database id="dataSource"> 
    <jdbc:script location="blah"/> 
</jdbc:embedded-database> 

Блок как таковой:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:applicationContext.xml") 
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) 
@Transactional 
public class DAOTest(){ 

    @Autowired 
    public MyDAO myDAO; 


    @Test 
    public void test1(){ 
     List list = myDAO.getHibernateTemplate.loadAll(Hit.class); 
     assertThat(list.size(), equalTo(0)); 

     Hit hit = new Hit(); 
     myDAO.saveHit(hit); 

     list = myDAO.getHibernateTemplate.loadAll(Hit.class); 
     assertThat(list.size(), equalTo(1)); 
    } 

    @Test 
    public void test2(){ 

     List list = myDAO.getHibernateTemplate.loadAll(Hit.class); 
     assertThat(list.size(), equalTo(0)); 
    } 

} 

Когда я бегу выше, тест 2 терпит неудачу, потому что список с 1 элемент возвращается. Почему откат не происходит между тестами?

ответ

3

Так что разобрался. Проблема заключалась в том, что я использовал DataSourceTransactionManager, но использовал Hibernate в коде и поэтому вам нужно было использовать HibernateTransactionManager.

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