Существует ли пригодная для использования стандартная (168/286) среда тестирования портлетов? (особенно тот, который работает с Spring PortletMVC) - PullRequest
3 голосов
/ 08 июня 2009

Я не видел ничего в этой области, которую я бы рекомендовал клиенту. Если вы использовали Spring PortletMVC, как вы его тестировали?

Его легко тестировать на уровне кода портлета и относительно легко тестировать на стороне клиента с помощью HtmlUnit, Selenium и т. П., Но я не видел ничего такого, что представляло бы собой «серый ящик» в духе JSFUnit (мне кажется, что это путь вперед).

  • Драйвер Apache Pluto теоретически может быть использован для начальной загрузки тестового жгута. Кто-нибудь пробовал это?
  • Подходит какой-нибудь тупик или провайдер данных?
  • Есть ли подход к решению проблем двухфазной обработки?

Ответы [ 2 ]

6 голосов
/ 15 июня 2009

Я ничего не знаю о портлетах, но это так.

Есть portletUnit .

portletUnit - это среда тестирования используется для тестирования портлетов JSR-168 снаружи Контейнер портлета так же, как servletUnit используется для тестирования сервлетов вне Контейнер сервлетов. Прогнозируемый спроектирован для отображения функционально servletUnit на портлеты с servletUnit сам обеспечивает основа для портлета Unit.

Дополнительную информацию можно найти в его блоге Project PortletUnit , включая PortletUnit и Spring Portlet: проверка ошибок проверки формы .

При тестировании с помощью portletUnit это не очевидно, как проверить, были ли любые ошибки формы. К счастью, используя особенность рендера слушателя PortletRunner, есть простой способ проверить ошибки валидатора.

Есть также статья в блоге, написанная Нильс-Хельге Гарли Хегвик в 2007 году под названием Тестирование портлетов с Jetty, Pluto и JWebUnit .

Вспоминая отличную статью от Блог Йоханнеса Бродволла о интеграционное тестирование с Jetty и JWebUnit, я хотел расширить его подход к использованию встроенного Установка Jetty-Плутон, которую я создал. это оказалось довольно легко.

Наконец, документация Spring Framework 10.2 Модульное тестирование .

The org.springframework.mock.web.portlet пакет содержит набор Portlet API макет объектов, предназначенных для использования с Каркас Spring's Portlet MVC.

[...] org.springframework.test.web пакет содержит ModelAndViewAssert, который может быть использован в сочетании с любая среда тестирования (например, JUnit 4+, TestNG и т. Д.) Для модульных тестов, занимающихся с объектами Spring MVC ModelAndView.

[...] Чтобы проверить свои контроллеры Spring MVC, используйте ModelAndViewAssert в сочетании с MockHttpServletRequest, MockHttpSession и т. Д. Из org.springframework.mock.web package.

Вот похожая статья, написанная Джоном Фергюсоном Смартом под названием Модульное тестирование ваших приложений Spring-MVC .

Одна из замечательных вещей об этом рамки, насколько это тестируемо. В Spring-MVC, любые пользовательские валидаторы (для проверка поля и формы) и редакторы свойств (для преобразования текста поля для конкретных типов Java) очень легко проверить - вы можете просто проверить они, как будто они где изолированные POJO.

Spring-MVC также поставляется с полным комплектом фиктивных объектов, которые вы можете использовать (с немного практики) чтобы проверить Контроллеры к содержанию вашего сердца. Например, вы можете использовать такие классы, как MockHttpServletRequest и MockHttpServletResponse для симуляции ваш HTTP-запрос и ответ объекты. Это также облегчается тот факт, что Controller s может быть создаются как обычные классы Java. Например, представьте, что вы тестируете класс контроллера для страницы, которая обновляет запись сведений о клиенте. Вы может сделать это очень просто следующим образом:

public class UpdateClientTest {
        //
        // Prepare your request
        //
        request.setMethod("POST");      
        request.setParameter("id", "100");
        request.setParameter("firstName", "Jane");
        request.setParameter("lastName", "Doe");
        //
        // Invoke the controller
        //
    controller = new ChoosePeriodController();
        ModelAndView mav = controller.handleRequest(request, response);
    //
    // Inject any service objects you need
    //
        controller.setClientService(clientService);
    ...
        //
        // Inspect the results
        //
        assert mav != null;
        assertEquals("displayClient",mav.getViewName());  
        Client client = (Client) mav.getModel().get("client");
        assertEquals("Jane",client.getFirstName());  
        assertEquals("Doe",client.getLastName());  
    ...        
    }
    ...
0 голосов
/ 01 ноября 2014

Checkout spring-test-portlet-mvc (https://github.com/markusf/spring-test-portlet-mvc),, который предоставляет возможности MockMvc для контекста портала и позволяет легко интегрировать тестирование ваших Spring Portlets.

...