Модульное тестирование JSF - PullRequest
15 голосов
/ 09 июня 2009

Я пытаюсь найти практическую структуру модульного тестирования для JSF.

Я знаю о JSFUnit, но это очень непрактично для меня. Мне нужно включить около 10 JAR-файлов в мой проект и перепрыгнуть через множество других обручей, чтобы запустить его.

Я понимаю, что - из-за необходимости моделировать платформу и клиент - тестирование веб-приложений в модуле затруднено. Но есть ли лучший способ?

Ответы [ 6 ]

9 голосов
/ 09 июня 2009

Задумывались ли вы о проведении интеграционного тестирования с Selenium или другим инструментом? Selenium позволяет записывать и запускать тесты прямо в браузере. Вы также можете запускать тесты в нескольких браузерах и на нескольких платформах с помощью Selenium Remote Control .

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

3 голосов
/ 09 июня 2009

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

Другая проблема с селеном заключается в том, что он требует развертывания вашего кода, а это означает, что он не очень хорошо работает с инфраструктурами юнит-тестирования, например, maven.

Я бы сказал, что написание действительно хороших модульных тестов для управляемых bean-компонентов неоценимо.

2 голосов
/ 11 июня 2009

Вы взглянули на задачу Ant jsfunitwar или, в качестве альтернативы, плагин Maven, предоставленный JSFUnit? И то, и другое значительно уменьшает сложность создания файла .war для тестирования. Я использую JSFUnit в своем текущем проекте и считаю, что комбинация возможностей тестирования белого и черного ящиков очень мощная. Поскольку JSFUnit использует HtmlUnit под прикрытием, вы можете очень легко и эффективно исследовать сгенерированный HTML или, наоборот, проверить состояние ваших внутренних компонентов поддержки JSF. Я смог включить тесты JSFUnit в свой процесс непрерывной интеграции и был очень доволен результатом.


1 голос
/ 03 декабря 2009

Селен поверхностный , jsfunit внутрь . Я рекомендую использовать jsfunit, если проект не прост. Поскольку член команды может изменить имена управляемых jsf и т. Д., Вы можете узнать это с помощью jsfunit.

1 голос
/ 10 июня 2009

HttpUnit также может быть альтернативой. Он предоставляет apis, поэтому у вас есть выбор для автоматизации тестов.

http://httpunit.sourceforge.net/index.html

0 голосов
/ 22 декабря 2009

Я с Полом на Selenium очень прост в настройке и начинаю работать с ним. Я использую Selenium IDE в Firefox с некоторыми настройками на этом уровне, затем вы можете экспортировать их на другие платформы, такие как тесты Java JUnit. Было довольно легко загрузить и запустить selenium-server.jar, добавить selenium-java-client-driver в мой существующий проект драйвера Eclipse Maven POM; затем запустите тот же экспортированный тест JUnit в Eclipse. В основном я хотел использовать Java только для зацикливания, которое базовая среда Selenium IDE не поддерживала.

Я также настроил модуль JSF для своего проекта, который требует больше времени для конфигурирования ... что еще более важно, хотя для таких тестов в контейнере, как JSFUnit, изменения в тесте требуют перестроения WAR, повторного развертывания в контейнере и последующего выполнения из Eclipse или через браузер. Так что для быстрой попытки внести небольшие изменения это отнимает много времени. Конечно, с JSFUnit у вас есть доступ ко всем внутренним элементам JSFSession и т. Д., Так что это зависит от того, какая гранулярность тестирования вам нужна.

Мне было бы интересно, если кто-нибудь знает более быстрый способ отменить изменения в тесте JSFUnit и выполнить его. Определенно, тесты Selenium больше похожи на тесты JUnit в этом отношении.

...