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

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

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

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


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


Ответы (1)


arrow_upward
3
arrow_downward

Контроллер.

Если вы хотите протестировать код самого контроллера (возвращая правильный 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