Я пытаюсь найти практическую основу модульного тестирования для JSF.
Я знаю о JSFUnit, но для меня это очень непрактично. Мне нужно включить около 10 JAR-файлов в мой проект и перепрыгнуть через множество других обручей, чтобы он заработал.
Я понимаю, что из-за необходимости моделировать платформу и клиент модульное тестирование веб-приложений затруднено. Но есть ли лучший способ?
Какие фреймворки вы используете с JSF или используете сырой JSF? Drew 09.06.2009
Я использую richFaces для функциональности AJAX и facelets для рендеринга. Кроме того, я использую JSF RI 1.2 для своей реализации. Для моего сервера приложений я использую Glassfish v2. Zack Marrapese 10.06.2009
Некоторые респонденты упоминают Selenium. Обратите внимание, что Selenium не является инструментом модульного тестирования. Он предназначен для интеграционного тестирования собранного и развернутого приложения. Модульное тестирование означает тестирование отдельных частей кода, созданного из среды. pcjuzer 10.12.2010
Удалось ли вам найти хороший помощник для модульного тестирования для JSF 1.2, такой как JSF-Extensions или Apache Shale? abdelrahman-sinno 07.03.2016
Думали ли вы о проведении интеграционного тестирования с помощью Selenium или другого инструмента? Selenium позволяет записывать и запускать тесты прямо в браузере. Вы также можете запускать тесты в нескольких браузерах и на разных платформах с помощью Selenium Remote Control.
Написание модульных тестов - это хорошо, но это может дать больше возможностей для создания некоторых функциональных интеграционных тестов, а не для модульного тестирования кода уровня представления.
Ответ 2 · рейтинг 3 · mR_fr0g
В проекте, над которым я сейчас работаю, мы баловались использованием селена. На самом деле мы потратили много времени на написание этих селениум-тестов, но обнаружили, что они приносят мало пользы, потому что пользовательский интерфейс меняется очень сильно, и вы просто удваиваете свои усилия с очень небольшой отдачей от инвестиций.
Еще одна проблема с селеном заключается в том, что он требует развертывания вашего кода, а это означает, что он плохо работает с платформами модульного тестирования, например, с maven.
Я бы сказал, что написание действительно хороших модульных тестов для ваших управляемых компонентов бесценно.
Ответ 3 · рейтинг 2 · Community
Вы смотрели на задачу jsfunitwar Ant или, альтернативно, плагин Maven, предоставленный JSFUnit? И то, и другое значительно снижает сложность создания тестируемого файла .war. Я использую JSFUnit в своем текущем проекте и считаю, что сочетание возможностей тестирования белого и черного ящиков очень мощное. Поскольку JSFUnit использует HtmlUnit скрыто, вы можете очень легко и эффективно исследовать сгенерированный HTML или, наоборот, проверить состояние ваших внутренних компонентов поддержки JSF. Я смог включить тесты JSFUnit в свой процесс непрерывной интеграции и остался очень доволен результатом.
Ответ 4 · рейтинг 1 · rangalo
HttpUnit также может быть альтернативой. Он предоставляет API, поэтому у вас есть возможность автоматизировать тесты.
http://httpunit.sourceforge.net/index.html
Ответ 5 · рейтинг 1 · baybora.oren
Selenium поверхностный, jsfunit внутренний. Я рекомендую использовать jsfunit, если проект не простой. Поскольку член команды может изменять имена управляемых компонентов jsf и т. д., вы можете отследить это с помощью jsfunit.
Ответ 6 · Wayne Earnshaw
Я с Полом насчет того, что 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.