Модульное тестирование JSF
Я пытаюсь найти практическую модульную структуру тестирования для JSF.
Я знаю о JSFUnit, но это очень непрактично для меня. Мне нужно включить около 10 JAR в мой проект и перепрыгнуть через многие другие обручи, чтобы запустить его.
Я понимаю, что из-за необходимости имитировать платформу и клиентское тестирование веб-приложений сложно. Но есть ли лучший способ?
Ответы
Ответ 1
Задумывались ли вы о проведении тестирования интеграции с помощью Selenium или другого инструмента? Selenium позволяет записывать и запускать тесты непосредственно в браузере. Вы также можете запускать тесты в нескольких браузерах и на нескольких платформах с помощью Selenium Remote Control.
Тестирование единиц записи является хорошим, но оно может обеспечить больше для создания некоторых функциональных интеграционных тестов, а не модульного тестирования кода уровня представления.
Ответ 2
В проекте, над которым я работаю, в настоящий момент мы пытались использовать селен. Мы на самом деле потратили много времени на эти тесты селена, но обнаружили, что они мало ценят, потому что пользовательский интерфейс так сильно меняется, и вы просто в итоге удваиваете свои усилия за очень небольшую отдачу от инвестиций.
Другая проблема с селеном заключается в том, что для ее развертывания требуется, чтобы ваш код был развернут, что означает, что он не хорошо работает с фреймами unit test, например, maven.
Я бы сказал, что писать действительно хорошие модульные тесты для вашего управляемого beans неоценимо.
Ответ 3
Вы рассмотрели задачу jsfunitwar Ant или, альтернативно, плагин Maven, предоставленный JSFUnit? Оба они значительно уменьшают сложность генерации файла .war для тестирования. Я использую JSFUnit в своем текущем проекте и считаю, что сочетание возможностей белого ящика и черного ящика очень мощное. Поскольку JSFUnit использует HtmlUnit под обложками, вы можете очень легко и эффективно исследовать сгенерированный HTML или, наоборот, проверить состояние внутренней поддержки JSF beans. Я смог включить тесты JSFUnit в процесс непрерывной интеграции и был очень доволен результатом.
Ответ 4
HttpUnit также может быть альтернативой. Он предоставляет apis, поэтому у вас есть выбор для автоматизации тестов.
http://httpunit.sourceforge.net/index.html
Ответ 5
Селен поверхностный, jsfunit внутрь. Я рекомендую использовать jsfunit, если проект не прост. Поскольку член команды может изменять имена jsf managedbean или и т.д., Вы можете поймать это с помощью jsfunit.
Ответ 6
Я с Полом на Селене очень легко настроить и начать работать. Я использую 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 в этом отношении.