Как отменить изменения в БД, сделанные во время юнит-тестов? - PullRequest
0 голосов
/ 09 февраля 2012

Мне нужно возвращаться в «чистое» состояние БД после каждого теста, какой самый простой способ отменить изменения, сделанные во время выполнения тестов?

Ответы [ 4 ]

0 голосов
/ 10 февраля 2012

Последнее пример приложения Note Pad делает что-то вроде этого. Он включает в себя модульные тесты для поставщика контента, который использует Note Pad. Поскольку эти тесты основаны на JUnit 3, Методы setUp () и tearDown () вызываются для каждого модульного теста.

Методы тестирования используют закрытый метод в поставщике контента для удаления таблиц в базовой базе данных и последующего их воссоздания. Класс теста и класс провайдера контента используют одно и то же имя пакета, поэтому закрытый метод виден тесту. Однако он не виден вне провайдера контента, поэтому никто другой не сможет его вызвать, и у него нет Javadoc.

Если этого недостаточно, вы можете использовать метод ContentProvider.call () для управления поставщиком (путем вызова ContentResolver.call ()).

0 голосов
/ 10 февраля 2012

На этот вопрос есть ответы, которые могут привести вас в правильном направлении.Я думаю, что проще всего использовать транзакции для обработки отката.

0 голосов
/ 10 февраля 2012

Самый простой способ - создать фиктивную БД, содержащую только некоторые тестовые данные, после теста просто отбросьте ее.

0 голосов
/ 09 февраля 2012

Используйте DELETE FROM <tablename>; VACCUUM; или удалите таблицы и создайте заново. Используйте позже, если вам нужно сбросить значения последовательности, используемые столбцами AUTOINCREMENT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...