Как выполнить откат транзакции базы данных при тестировании служб с помощью Spring в JUnit?

У меня нет проблем с тестированием моего DAO и сервисов, но когда я тестирую INSERT или UPDATE , я хочу чтобы откатить транзакцию и не повлиять на мою базу данных.

Я использую @Transactional внутри своих служб для управления транзакциями. Я хочу знать, Если я удалю @TransactionConfiguration (defaultRollback = true) , тогда тест пройден, но новая запись будет вставлена ​​в базу данных.

@Test
@Transactional
@Rollback(true)
public void testInsert(){
    long id = myService.addPerson( "JUNIT" );
assertNotNull(id);
if( id < 1 ){
        fail();
    }
}

Теперь можно пройти тест правильно, но откат игнорируется и запись вставляется в база данных. Я, очевидно, аннотировал метод addPerson () внутри myService с помощью @Transactional . Почему откат игнорируется?

36
задан Sled 11 February 2014 в 19:51
поделиться