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