2013-05-29 5 views
0

У меня есть модульный тест, который вставляет строки в базу данных, и я бы хотел, чтобы DBUnit автоматически очищал эти строки после этого (DBUnit первоначально не вставляет эти строки - это чисто ответственность за тестируемый код).Очистка базы данных после теста JUnit.

Спасибо.

ответ

1

Сделайте запрос INSERT/UPDATE/DELETE транзакционным и откатите их обратно, когда тест будет выполнен.

+0

спасибо за решением, но логика фиксации присутствует в функции, которая содержит тестируемый код, далее я издеваюсь БД с помощью блока DB поэтому я не имею контроль фиксации в тесте. –

1

Если вы используете JUnit4, вы можете объявить функцию с аннотацией @AfterClass: она будет выполнена после всех тестов и вы сможете удалить все строки, добавленные в ваши таблицы.

В JUnit3 у вас нет эквивалента, но вы можете переопределить метод tearDown(), который будет выполняться после каждого теста (эквивалент аннотации в JUnit4).

+0

Правильный мой вопрос: как это сделать в DBUnit. –

0

Если вы выделяете внешние ресурсы (файл/БД) в методе Before, вам необходимо освободить их после запуска теста. Аннотирование метода public void с @After приводит к тому, что этот метод запускается после метода Test. Все @After методы гарантированно выполняются, даже если метод Before или Test генерирует исключение. Методы @After, объявленные в суперклассах, будут запускаться после тех, что относятся к текущему классу.

В примере показан файл как ресурс, но вы можете использовать его для очистки БД.

public class Example { 
    File output; 
    @Before public void createOutputFile() { 
      output= new File(...); 
    } 
    @Test public void something() { 
      ... 
    } 
    @After public void deleteOutputFile() { 
      output.delete(); 
    } 
} 
+0

Так что @Juned в вашем коде позволяет предположить, что я делаю операцию добавления в базу данных в функции something(), и теперь, как я могу удалить вставленную запись, используя блок DB в @After ?? –

+0

@UdayReddy Напишите запрос на удаление и выполните оператор в функции After. –

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