2012-06-18 7 views
2

Я пытаюсь настроить junit с пружиной, и я пытаюсь использовать инъекцию зависимости весны для заполнения тестового класса. Мне интересно, если это то, что я должен даже пытаться? Я думаю, что я вижу, что Spring создает экземпляр тестового класса и выполняет DI, но затем JUnit создает собственный экземпляр, который не выполнил DI и тест не работает. Я использую JUnit 4.x и весну 3.1.1.Использование Junit с весной

+1

Вы используете аннотации: '' @RunWith (SpringJUnit4ClassRunner.class) '' и '' @ContextConfiguration (locations = {'/application-config.xml'}) ''? – timaschew

+0

@opike Итак, вы хотите ввести зависимость в сам тест-класс JUnit? – Ritesh

ответ

7

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

@RunWith(SpringJUnit4ClassRunner.class) 
@Transactional 
@ContextConfiguration(locations = "/applicationContext-TEST.xml") 
public class MyTest {} 

Но это может быть предпочтительнее, чтобы просто проверить свои весенние управляемые классы как POJO и используя mock objects, где это необходимо.

Например, многие методы контроллера имеют модель, введенную во время выполнения весной. Однако, чтобы проверить их, я просто передаю экземпляр HashMap. И мои классы уровня обслуживания, которые я могу передать в издеваемом dao, что легко, потому что я разработал интерфейс и использовал установку setter ...

1

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

Начинается превосходный Мартин Фаулер article на Stubs и Mocks.

Mockito в сочетании с PowerMock, может помочь вам протестировать весенние компоненты, сервисы и контроллеры.

Mockito Введение: https://code.google.com/p/mockito/
PowerMock Введение: http://code.google.com/p/powermock/

Я понимаю, это займет время, чтобы исследовать, изучать и внедрять, но это очень полезно для написания тестов JUnit зависимостей Введенной фасоли.

+0

Я понимаю, что то, что я делаю сейчас, не является «чистым» модульным тестированием, но по прагматическим причинам я собираюсь по-прежнему с этим курсом на данный момент. В более поздний момент я рассмотрю фальшивые тестовые рамки, которые вы предоставили. – opike

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