2014-01-07 3 views
4

Мне нужно выполнить тестирование функции прослушивателя событий, но я никогда не делал этого раньше, и я не могу найти пример где-нибудь об этом. Есть ли у кого-нибудь какие-либо предложения по хорошему пути?Unit Testing Слушатели событий

+1

Что слушатели мероприятия? –

+0

Это собственный класс (не анонимный), и он реализует интерфейс, который не является частью стандартных java-библиотек (этот интерфейс напрямую расширяет EventListener). – endorphins

ответ

5

Существует не так много, постройте прослушиватель событий, перейдите в макет событие и тест.

@Test 
public void testEventListener() { 
    ActionListener subjectUnderTest = new MyActionListener(); 
    ActionEvent mockEvent = mock(ActionEvent.class); 
    // Or just create a new ActionEvent, e.g. new ActionEvent(); 
    // setup mock 

    subjectUnderTest.actionPerformed(mockEvent); 

    // validate 
} 

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

+0

Это может быть глупый вопрос, но как мне настроить настройку фальшивого события? Есть ли что-то простое, что я могу использовать в стандартных библиотеках java для этого или для этого требуются внешние библиотеки? – endorphins

+0

Как правило, вы используете насмешливую библиотеку, но если вы не хотите ее использовать, вы можете просто создать экземпляр события напрямую. Я поклонник библиотеки [Mockito] (http://code.google.com/p/mockito/), очень простой в использовании. Если раньше вы не запускали макет объектов в модульном тестировании, вы строго ограничиваете типы тестов, которые вы можете запустить. Я рекомендую [Практическое тестирование модуля с TestNG и Mockito] (http://www.amazon.com/Practical-Unit-Testing-TestNG-Mockito/dp/839348930X) в качестве учебника. – dimo414

+0

Я делал относительно простые модульные тесты и не нуждался в том, чтобы издеваться над объектами, но я слышал об этом. Я ценю руководство, и я обязательно посмотрю на этот учебник. Спасибо за помощь. – endorphins