В SpringMVC общие тестовые случаи проходят тестирование уровня обслуживания. Сегодня я продемонстрирую, как использовать SpringMVC Mock, чтобы напрямую проверить код уровня контроллера.
1. Что такое макетное тестирование?
Ишительное тестирование - это метод испытаний, который использует виртуальный объект для создания для тестирования для определенных объектов, которые нелегко построить или получить в процессе тестирования.
2. Зачем использовать фиктивное тест?
Тестирование с помощью Mock Object используется в основном для имитации инструментов, которые нелегко построить в приложениях (такие как HttpservletRequest, должны быть построены в контейнерах сервлета) или относительно сложные объекты (такие как объекты ResultSet в JDBC), чтобы сделать тест гладко.
3. Общие аннотации
Runwith (Springjunit4classrunner.class): означает использование компонентов Spring Test для модульного тестирования;
WebAppConfiguration: Использование этой аннотации будет включать веб -службу при запуске модульных тестов, а затем начнет вызывать API контроллера REST, а затем остановить веб -службу после завершения модульного теста;
ContextConfiguration: Есть много способов указать информацию о файле конфигурации бобов. В этом примере используется форма пути файла. Если есть несколько файлов конфигурации, информация в кронштейнах может быть настроена в виде строкового массива для представления его;
4. Установите испытательную среду
Spring MVC Test Framework предоставляет два способа: независимо установить и интегрировать тестирование веб -среды (этот метод не интегрирует реальную веб -среду, но моделирует и тестирует через соответствующий Mock API без запуска сервера).
Независимый метод проверки установки
Mockmvcbuilders.standalonesetup (объект ... контроллеры): укажите набор контроллеров через параметры, чтобы вам не нужно было получить его из контекста;
Есть два основных шага:
(1) Сначала создайте соответствующий контроллер самостоятельно и введите соответствующие зависимости
(2) Моделируйте тестовую среду MVC через Mockmvcbuilders.standalonesetup и получите Mockmvc через сборку
Код заключается в следующем:
пакет com.xfs.test; import org.junit.assert; import org.junit.fore; import org.junit.test; import org.springframework.test.web.servlet.mockmvc; импорт org.springframework.test.web.servlet.request.mockmvcrequilds; org.springframework.test.web.servlet.result.mockmvcresulthandlers; import org.springframework.test.web.servlet.result.mockmvcresultmatchers; import.springframework.test.web.servlet.sepl com.alibaba.fastjson.json; import com.alibaba.fastjson.jsonobject; импорт com.xfs.web.controller.apicontroller;/** * Независимый метод инсталляции Springmvc Mock Test * * @author Admin * * 10:39:49 утра 23 ноября 2017 */Общественный Class Testapione {Private Mockmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmvcmv -mockmv -mockmvcmvccmv; @Before public void setup () {apicontroller apicontroller = new apicontroller (); mockmvc = mockmvcbuilders.standalonesetup (apicontroller) .build (); } @Test public void testgetgetGectence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestbuilders.post ("/api/get sequence")) .AndExpect (mockmvcresultmatchers.status (). IS (200)). И (mockmvcreslmatchers.status (). .AndReturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ("Код состояния запроса:" + status); String result = mvcresult.getResponse (). GetContentAssTring (); System.out.println ("Интерфейс возвращает результат:" + result); JsonObject resultObj = json.parseObject (result); // определить, является ли поле успеха в интерфейсе, возвращается в JSON, является истинной Assert.AssertTrue (resultObj.getBooleanValue («Успех»)); } catch (Exception e) {e.printstackTrace (); }}}Результат запроса заключается в следующем:
Интегрированная веб -среда
Mockmvcbuilders.webappContextSetup (контекст WebApplicationContext): указать WebApplicationContext, и соответствующий контроллер будет получен из контекста, и будет получен соответствующий MockMVC;
Есть три основных шага:
(1) @WebAppConfiguration: используется в тестовой среде, что означает, что приложение Context, используемый в тестовой среде, будет иметь тип WebApplicationContext; Значение указывает корень веб -приложения;
(2) Через @Autowired WebApplicationContext WAC: контейнер ApplicationContext, введенный в веб -среду
(3) Затем создайте Mockmvc через Mockmvcbuilders.WebAppContextSetup (wac) .build () для тестирования
Код заключается в следующем:
пакет com.xfs.test; import org.junit.assert; импорт org.junit.fore; import org.junit.test; import org.junit.runner.runwith; import org.springframework.beans.factory.annotation.autowired; импорт org.spramework.mock.mock.mock. org.springframework.test.context.contextConfiguration; импорт org.springframework.test.context.junit4.abstractjunit4springcontextTests; import org.springframework.test.Web.WebAppConfiguration; import.SpormOct.Servle.Servle.Servle.Servle.Servle.Servle.Web.WebAppConfiguration; org.springframework.test.web.servlet.request.mockmvcrequestbuilders; импорт org.springframework.test.web.servlet.result.mockmvcresulthandlers; import.springframework.test.web.servlet.result.mockmvly. org.springframework.test.web.servlet.setup.mockmvcbuilders; import org.springframework.web.context.webapplicationContext; импорт com.alibaba.fastjson.json; import com.alibaba.fastjson.jsonobject 2017 в 11:12:43 AM*/@runwith (junit4classrunner.class)@webappconfiguration@contextconfiguration (locations = {"classpath*: spring/*. Xml"}) public class testapitwo extrables abstractjunit4springcontextTests {@Autowired public webPplictextextextextextextextextextextextextextextextextextextextextextextextextextextextextextextextextextextect. public mockmvc mockmvc; Общественная сессия Mockhttpsession; @Before public void до () бросает исключение {mockmvc = mockmvcbuilders.webappContextSetup (wac) .build (); } @Test public void testgetgetGectence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestbuilders.post ("/api/get sequence")) .AndExpect (mockmvcresultmatchers.status (). IS (200)). И (mockmvcreslmatchers.status (). .AndReturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ("Код состояния запроса:" + status); String result = mvcresult.getResponse (). GetContentAssTring (); System.out.println ("Интерфейс возвращает результат:" + result); JsonObject resultObj = json.parseObject (result); // Определите, является ли поле успеха в интерфейсе, возвращает JSON истинный Assert.AssertTrue (resultObj.getBooleAnValue («Успех»)); } catch (Exception e) {e.printstackTrace (); }}}Результаты прогона такие же, как и из вышеуказанного независимого теста.
Суммировать:
Весь процесс:
1. Mockmvc.perform выполняет запрос;
2. Mockmvcrequestbuilders.get ("/user/1") Создает запрос
3. resultactions.andexpect добавляет утверждения после исполнения
4. resultactions.anddo добавляет процессор результата, чтобы указать, что делать с результатом. Например, используйте mockmvcresulthandlers.print (), чтобы вывести всю информацию о результатах ответа.
5. resultactions.andreturn означает, что соответствующий результат возвращается после завершения выполнения.
Весь процесс тестирования очень регулярный:
1. Подготовьтесь к испытательной среде
2. Выполнить запросы через Mockmvc
3. Добавить утверждение проверки
4. Добавить процессор результата
5. Получите MVCresult для пользовательских утверждений/сделайте следующий асинхронный запрос
6. удалить тестовую среду
Ссылка: Spring-MVC-Test-Framework
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.