2011-01-13 4 views
1

После запуска теста Selenium (jUnit4) с использованием Maven я хотел бы очистить базу данных (удалить вещи, которые они вставили и т. Д.). Это более старый проект, работающий на Tapestry/Spring/Hibernate и устаревшей базе данных. Я хотел бы сделать очистку в аннотированном методе @After, но инъекция DAO/Managers/SessionFactory не работает.Очистка базы данных после тестов Selenium

Тестирование выполняется следующим образом: я запускаю приложение () приложение в одной консоли и запускаю тестирование на другой консоли (mvn test) - он обращается к приложению на localhost: 8080.

+0

Вы можете посмотреть на этот вопрос может: http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit- 4-x – sblundy

+0

Вы ищете подсказку, как исправить вашу проблему: «но инъекция DAO/Managers/SessionFactory не работает». или другим способом настройки и сброса тестовых данных? – Ralph

ответ

6

несколько возможных подходов:

  1. Используйте dbunit, которая предназначена для возвращения базы данных в состоянии знать между испытаниями.
  2. Оберните каждый тест в транзакции базы данных блоком try{} finally{}, где, наконец, откат транзакции.
  3. Используйте базу данных строго для тестирования и не беспокойтесь об этом. Сделайте свои тесты каждый раз, создавая уникально идентифицированные/именованные значения, чтобы у вас не было конфликтов, но в противном случае не предпринимайте никаких действий.
+2

+1 Я использую стратегию 3 (а иногда и стратегию 2), но рассказываю о многом. Вы не всегда можете гарантировать возврат системы в исходное состояние (например, если у вас есть бизнес-метод, который совершает транзакцию, и вам нужно проверить это, если ваша программа вылетает после фиксации, но до вашего кода очистки, то вы получаете мусор в вашей БД). Учитывая, что иногда у вас может быть барахло в вашей БД, вам нужно использовать тестовую базу данных, а затем вы можете просто расслабиться и сэкономить время на запись любого кода очистки вообще. –

+1

@ Адриан Смит: согласился. Другой способ думать об этом - чем больше людей (программисты, тестеры и т. Д.) Участвуют, тем больше вероятность того, что вы закончите на # 3, потому что все становится неработоспособным. – orangepips

+2

+1 для стратегии 3. Зачем беспокоиться о тестовой кровати? – Rajasankar

0

Я предпочел бы использовать

@Transactional

выше декларации эту заметку метода. Он выполняет откат после каждого теста. Он отлично работает для меня.

Например:

@Test 
@Transactional 
public void simpleTest(){  
    // your logic here  
} 
Смежные вопросы