У нас есть приложение, созданное с использованием Spring / Hibernate / MySQL, теперь мы хотим протестировать слой DAO, но здесь есть несколько недостатков, с которыми мы сталкиваемся.
Рассмотрим вариант использования нескольких объектов, связанных друг с другом, например: Книга содержит страницы.
- Объект Page не может существовать без Книги, поскольку book_id является обязательным FK в Page.
- Для тестирования страницы мне нужно создать книгу.
Этим простым сценарием использования легко управлять, но если вы начнете строить Библиотеку, пока вы не создадите всю вселенную, окружающую Книгу и Страницу, вы не сможете ее протестировать!
Итак, чтобы проверить страницу;
- Создать библиотеку
- Создать раздел
- Создать жанр
- Создать автора
- Создать книгу
- Создать страницу
- Сейчас тестируем страницу.
Есть ли простой способ обойти это "создание вселенной" и просто протестировать объект страницы в изоляции. Я также хочу иметь возможность тестировать HQL, связанные с Page. например:
SELECT new com.test.BookPage (book.id, page.name) FROM Book book, Page page.
Предполагается, что JUnit работает изолированно, поэтому мне нужно написать код для сборки всех вспомогательных объектов в тестовом примере для создания страницы. Любые советы о том, как ускорить процесс.
Редактировать: Spring следует философии отката транзакций после выполнения тестов, тем самым отменяя все изменения. Изменения схемы ожидаются по мере нашего дальнейшего развития, я хочу иметь возможность регулярно проверять ее с производственной базой данных (резервная копия!).