Модульное тестирование 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 в этом отношении.