Пересмешивая источник данных во время модульного тестирования - PullRequest
3 голосов
/ 08 августа 2011

Я хотел бы провести модульное тестирование моих независимых от БД контроллеров веб-уровня, даже если база данных не работает.

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

Кроме того, я использовал аннотации @Transactional, @AfterTransaction и @BeforeTransaction, которые я не хочу удалять.

Есть ли способ определения фиктивной фигуры (или фиктивно) dataSource, где мне не нужно предоставлять учетные данные базы данных, но все же получаю экземпляр моего transactionManager компонента?

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

То, что вы описываете, является скорее интеграционным тестом, чем модульным тестом.Для модульного тестирования не запускайте Spring или менеджер транзакций.Просто создайте экземпляр вашего контроллера и протестируйте его.Для интеграционных тестов рассмотрите возможность использования базы данных H2 в памяти .H2 очень быстр (намного быстрее, чем Derby) и отлично подходит для тестирования, когда требуется база данных.

0 голосов
/ 09 августа 2011

Использовать внедрение зависимости . Для этого у вас есть два стандартных и хорошо документированных варианта.

  1. Используйте такие рамки, как Google Guice . Для этого потребуются некоторые дополнительные затраты, но это поможет вам написать более качественный, более тестируемый код и имеет несколько интересных функций, таких как область видимости, что особенно полезно для веб-слоев.
  2. Реализуйте DI в своем собственном коде, добавив конструктор, который принимает параметр источника данных или метод установки источника данных. В производственной среде вы будете передавать / настраивать производственную базу данных, но в модульном тестировании вы можете использовать фиктивный источник данных, который просто регистрирует ваши операции / транзакции.
0 голосов
/ 09 августа 2011

Это покрыто весенними туториалами. Вы должны создать InMemory версию вашего DAO.

Посмотрите на 6.2 Исправьте неудачные тесты

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