Модульное тестирование JSF

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

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

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


person Zack Marrapese    schedule 09.06.2009    source источник
comment
Какие фреймворки вы используете с JSF или используете сырой JSF?   -  person Drew    schedule 09.06.2009
comment
Я использую richFaces для функциональности AJAX и facelets для рендеринга. Кроме того, я использую JSF RI 1.2 для своей реализации. Для моего сервера приложений я использую Glassfish v2.   -  person Zack Marrapese    schedule 10.06.2009
comment
Некоторые респонденты упоминают Selenium. Обратите внимание, что Selenium не является инструментом модульного тестирования. Он предназначен для интеграционного тестирования собранного и развернутого приложения. Модульное тестирование означает тестирование отдельных частей кода, созданного из среды.   -  person pcjuzer    schedule 10.12.2010
comment
Удалось ли вам найти хороший помощник для модульного тестирования для JSF 1.2, такой как JSF-Extensions или Apache Shale?   -  person abdelrahman-sinno    schedule 07.03.2016


Ответы (6)


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

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

person Paul Morie    schedule 09.06.2009
comment
Это кажется очень интересной альтернативой. Я посмотрю на это дальше. - person Zack Marrapese; 09.06.2009

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

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

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

person mR_fr0g    schedule 09.06.2009
comment
вы можете использовать селен с maven в качестве интеграционного теста - person IAdapter; 12.06.2009

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


person Community    schedule 11.06.2009

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

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

person rangalo    schedule 10.06.2009

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

person baybora.oren    schedule 03.12.2009

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

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

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

person Wayne Earnshaw    schedule 22.12.2009