SpringMVC에서 일반 테스트 사례는 서비스 계층을 테스트하고 있습니다. 오늘 저는 SpringMVC Mock을 사용하여 컨트롤러 계층 코드를 직접 테스트하는 방법을 보여 드리겠습니다.
1. 모의 테스트는 무엇입니까?
Mock Testing은 가상 객체를 사용하여 테스트 과정에서 구성하거나 얻기가 쉽지 않은 특정 객체를 테스트하기 위해 작성하기 위해 작성하는 테스트 방법입니다.
2. 왜 모의 테스트를 사용합니까?
모의 객체로 테스트하는 것은 주로 응용 프로그램 (예 : httpservletrequest와 같은 서틀 컨테이너에서 구성되어야 함) 또는 비교적 복잡한 객체 (예 : JDBC의 결과 세트 객체)를 구성하여 테스트를 원활하게 만들기 위해 주로 사용됩니다.
3. 일반적인 주석
runwith (SpringJunit4classRunner.class) : 단위 테스트에 스프링 테스트 구성 요소를 사용하는 수단;
WebAppConfiguration :이 주석을 사용하면 단위 테스트를 실행할 때 웹 서비스가 가능하게됩니다. 그런 다음 컨트롤러의 REST API를 호출 한 다음 장치 테스트가 완료된 후 웹 서비스를 중지합니다.
ContextConfiguration : Bean의 구성 파일 정보를 지정하는 방법에는 여러 가지가 있습니다. 이 예제는 파일 경로 양식을 사용합니다. 여러 구성 파일이있는 경우 브래킷의 정보를 문자열 배열로 구성하여이를 나타낼 수 있습니다.
4. 테스트 환경을 설치하십시오
Spring MVC 테스트 프레임 워크는 웹 환경 테스트를 독립적으로 설치하고 통합하는 두 가지 방법을 제공합니다 (이 방법은 실제 웹 환경을 통합하지 않고 서버를 시작하지 않고 해당 모의 API를 시뮬레이션하고 테스트합니다).
독립적 인 설치 테스트 방법
mockmvcbuilders.standalonesetup (Object ... 컨트롤러) : 매개 변수를 통해 컨트롤러 세트를 지정하여 컨텍스트에서 얻을 필요가 없습니다.
두 가지 주요 단계가 있습니다.
(1) 먼저 해당 컨트롤러를 직접 작성하고 해당 종속성을 주입합니다.
(2) Mockmvcbuilders를 통해 MVC 테스트 환경을 시뮬레이션하고 빌드를 통해 Mockmvc를 얻습니다.
코드는 다음과 같습니다.
package com.xfs.test; import org.junit.assert; import org.junit.before; import org.junit.test; import org.springframework.test.test.web.servlet.mockmvc; import org.springframework.web.servlet.reverquest.revcrequestbueStupleder; org.springframework.test.web.servlet.result.mockmvcresulthandlers; import org.springframework.test.web.servlet.result.mockmvcresultmatchers; import org.spramework.test.web.servlet.setup.mockbuilder; com.alibaba.fastjson.json; import com.alibaba.fastjson.jsonobject; import com.xfs.web.controller.apicontroller;/** * 독립적 인 설치 테스트 방법 SpringMVC Mock Test * * @Author Admin * * 10:39:49 11 월 23 일, 2017 년 11 월 23 일 */public class testapione {Private Mockmvc Mockmvc; @public void setup () {apicontroller apicontroller = new ApiconTroller (); mockmvc = mockmvcbuilders.standalonesetup (apicontroller) .build (); } @test public void testgetSequence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ( "/api/getSection")) .andreturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ( "요청 상태 코드 :" + 상태); 문자열 결과 = mvcresult.getResponse (). getContentAsstring (); System.out.println ( "인터페이스 리턴 결과 결과 :" + 결과); jsonobject resultObj = json.parseobject (결과); // 인터페이스의 성공 필드가 JSON으로 돌아가는지 여부를 결정합니다. } catch (예외 e) {e.printstacktrace (); }}}요청 결과는 다음과 같습니다.
통합 웹 환경
mockmvcbuilders.webappcontextsetup (webApplicationContext context) : webApplicationContext를 지정하면 해당 컨트롤러가 컨텍스트에서 얻어지고 해당 mockmvc가 얻어집니다.
세 가지 주요 단계가 있습니다.
(1) @WebAppConfiguration : 테스트 환경에서 사용되는데, 이는 테스트 환경에서 사용되는 ApplicationContext가 유형의 WebApplicationContext입니다. 값은 웹 응용 프로그램의 루트를 지정합니다.
(2) @autowired webApplicationContext WAC : ApplicationContext 컨테이너를 통해 웹 환경에 주입
(3) 그런 다음 테스트를 위해 Mockmvcbuilders.webappcontextsetup (wac) .build ()를 통해 Mockmvc를 만듭니다
코드는 다음과 같습니다.
package com.xfs.test; import org.junit.assert; import org.junit.before; import org.junit.test; import org.junit.runwith; import org.springframework.beans.annotation.AntOWERED; import org.springframework.web.mockhhttpestession; org.springframework.test.context.contextconfiguration; import org.springframework.test.context.junit.abtractJunit4SpringContextTests; import org.springframework.test.context.web.webappconfiguration; 가져 오기; org.springframework.test.web.servlet.mockmvc; import org.springframework.test.web.servlet.request.mockmvcrequestbuilders; import org.springframework.test.web.servlet.result.mockmcresulthandlers; org.springframework.test.web.servlet.result.mockmvcresultmatchers; import org.springframework.test.web.servlet.setup.mockmvcbuilders; import org.springframework.web.context.webapicationcontext; com.alibaba.fastjson.jsonobject;/** * 통합 웹 환경 방법 SpringMVC Mock Test * * @Author Admin * * 2017 년 11 월 23 일 오전 11:12:43 AM */@Runwith (junit4classRunner.class)@webAppConfiguration@contextConfiguration (locations = {))))) AbstractJunit4SpringContextTests {@autowized public webApplicationContext WAC; 공공 mockmvc mockmvc; 공개 mockhttpsession 세션; @public void wefore () 이전 ()은 예외 {mockmvc = mockmvcbuilders.webappcontextsetup (wac) .build (); } @test public void testgetSequence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ( "/api/getSection")) .andreturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ( "요청 상태 코드 :" + 상태); 문자열 결과 = mvcresult.getResponse (). getContentAsstring (); System.out.println ( "인터페이스 리턴 결과 결과 :" + 결과); jsonobject resultObj = json.parseobject (결과); // 인터페이스의 성공 필드가 json을 반환하는지 여부를 결정합니다. } catch (예외 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을 더 지원하기를 바랍니다.