2016-07-13 14 views
1

Я написал тест для MongoRepository в Spring Boot, и тест отлично работает. Единственная проблема заключается в том, что когда тест закончен, я хочу откат, чтобы в базе данных не было изменений, вызванных тестом.Весенняя загрузка MongoRepository @Rollback для тестов

// package... 

// imports... 

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = MetistrafficApplication.class) 
@Rollback(true) 
public class AppRepositoryTests { 

    @Autowired 
    private AppRepository appRepository; 

    @Test 
    public void insertTest() { 
     App app = new App("test"); 
     App appInserted = appRepository.save(app); 

     assertThat(appInserted.getName(), equalTo(app.getName())); 
    } 
} 

Я поставил @Transactional перед тем @Rollback, но получаю эту ошибку:

java.lang.illegalstateexception:Failed to retrieve PlatformTransactionManager for @Transactional test for test context 

Когда я искал ошибки, я не мог найти любой код с MongoRepository. Итак, как я могу это решить?

EDIT: После добавления @Transactional("PlatformTransactionManager"), ошибка я получаю изменен так:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'PlatformTransactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'PlatformTransactionManager' - neither qualifier match nor bean name match! 
+0

Обычно весенний откат каждой транзакции после выполнения тестового метода. Добавьте '@ Transactional' в свой класс и удалите' @ Rollback'. Это должно сработать. – Patrick

+0

Я по-прежнему получаю ту же ошибку: не удалось получить .... – kalahari

+0

попробуйте использовать '@Transactional (« PlatformTransactionManager »)' – Patrick

ответ

0

Насколько я знаю, не существует реализация Спринга TransactionManager для MongoDB, так как он не является транзакционной в ACID смысл. Таким образом, нет, вы не можете использовать аннотации @Transactional с MongoDB, и вам придется делать всю очистку вручную или использовать DBUnit и добавлять свои собственные расширения для MongoDB.

+0

. Думаю, я соглашусь на это, пока не появится лучшее решение :( – kalahari

+0

Вы также можете посмотреть [этот вопрос] (https://stackoverflow.com/questions/ 21386449/spring-data-and-mongodb-simple-roll-back-with-spring-in-transactional), хотя вы получите тот же ответ :) –