![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Имеются DAO-классы к которым нужно написать тесты. Проблема в том, что используется соединение через DataSource, который поднимает Tomcat. Т. е. что-то вроде:
Все запросы в конечном счете обрабатываются методом executeQuery. Есть задумка сделать базовый класс для всех тест-кейсов DAO и если бы в setUp() получилось бы создать свою DataSource, то все бы получилось отлично оттестировать. Можно ли как-нибудь быстро и просто создать свою DataSource? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Это вам нужно "мокировать" объекты. Посмотрите вот тут: http://www.jmock.org/. Там есть и get started и рецепты по использованию.
|
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Спасибо за ссылку, уже скачиваю, буду разбираться. |
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
powerOn,
Я так понимаю, идея в том, чтобы вынести получение DataSource в отдельный метод, написать интерфейс, а потом на тестах переопределить с помощью mocked объектов вызов метода getDataSource, чтобы он возвращал, к примеру, DataSource с одним подключением, который я ему и создаю. Т. е. подсовывать свой DataSource с помощью mocked. Как-то навороченно получается, ну да ладно попробую реализовать, если слегка подправить тестируемый код, то можно сделать даже вполне красиво. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Да, похоже на то.
Распишу немного подробнее: Мокирование объекта - это создание заглушки для этого объекта во время выполнения программы. Это очень полезная функция для тестирования. Ты можешь "замокать" любой абстрактный (или конкретный) класс или интерфейс и определить свое поведение методов. Например используешь ты Java Server Faces, написал Managed-Bean, который активно использует методы FacesContext. Задача его протестировать. Но так как FacesContext создаётся и инициализируется JSF-ом во время выполнения на сервере, то создать такой объект для теста нет возможности. Для решение такой задачи как раз подходит мокирование. Ты можешь создать объект FacesContext и переопределить поведение метода как тебе угодно (т.е. что бы покрытие было 100%). Кстати, важно иметь set методы для мокируемого объекта в тестируемом классе, что бы иметь возможность подсунуть заглушку. |
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
powerOn, спасибо, я примерно так и понял. Интересная штука, раньше о ней не слышал.
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Пожалуйста. Если твой вопрос решён, не забывай помечать его таковым.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |