Пошаговые инструкции по тестированию безопасности Spring

Я не могу удержаться, чтобы задать этот вопрос, поскольку SO не является альтернативой для поисковой системы, поскольку мы устали искать нужный контент, чтобы начать тестирование приложения Spring MVC. Мы новичок в весеннем и модульном тестировании. Предоставьте нам ссылки для пошагового руководства (если есть) по тестированию служб Spring REST, тестированию контроллеров и тестированию безопасности Spring.

Пожалуйста помоги.

Заранее спасибо.


person gurusai    schedule 03.07.2013    source источник


Ответы (1)


Контроллер.

Если вы хотите протестировать код самого контроллера (возвращая правильный ModelAndView или ModelMap), вы можете легко написать несколько модульных тестов. Обычно для этого я использую spring-test и junit.

Затем я пишу свой тест так:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-test-beans.xml")
public class FormControllerTest {

        @Autowired
        private MyController controller;

        @Test
        public void testFirstAction() {
                ModelMap model = new ModelMap();
                assertEquals("result", controller.firstAction("data", model));
                assertEquals("test", model.get("data"));
        }
}

Таким образом я проверяю правильность представления / модели. Если вы хотите увидеть, правильно ли сама веб-страница и использует ли правильное действие, вы можете посмотреть на тестирование интеграции Selenium (если это веб-страница, а не служба REST).


Весенняя безопасность

Чтобы проверить безопасность Spring, вы, вероятно, захотите издеваться над SecurityContextHolder. Здесь вы можете найти подробную информацию о текущем пользователе, так что вы также можете создавать макеты (с помощью фреймворка для фиксации, например Mockito или EasyMock) и делать так, будто вы вошли в систему как определенный пользователь. Дополнительную информацию об этом можно найти здесь (также некоторые ответы показывают, как можно сделайте это с помощью определенного фреймворка mocking).

Как и в случае с моим ответом о контроллере, если вы хотите проверить общую картину, вы хотите использовать интеграционное тестирование (например, с Selenium).


REST сервис

Сама служба REST (а не контроллер) не является чем-то более сложным для тестирования, поскольку это скорее интеграционный тест, чем модульный тест. Я думаю, что лучший способ проверить это - создать клиент REST (это можно сделать с помощью фреймворков JAX-RS, таких как RESTEasy или Apache CXF) и проверить результаты, которые вы получите с клиентом REST.

Обычно это проще сделать, если вы определили свою службу REST с помощью JAX-RS (а не с помощью Spring MVC), но это не невозможно. Если вы не хотите создавать интерфейсы и дополнительные классы домена, вы также можете использовать Apache HttpClient. Я также нашел пример того, как его использовать здесь.

person g00glen00b    schedule 03.07.2013
comment
Разве я не могу тестировать службы REST с помощью MockMvc? - person gurusai; 03.07.2013