봄 부팅 나머지 컨트롤러 유닛 테스트

봄 부팅 나머지 컨트롤러 파일에 대한 단위 테스트를 작성하는 쉬운 방법을 제공합니다. SpringJUnit4ClassRunner 및 MockMvc의 도움으로, 당신은 나머지 컨트롤러 파일에 대한 단위 테스트를 작성하는 웹 응용 프로그램 컨텍스트를 생성 할 수 있습니다.
단위 테스트를 작성해야한다 src/test/java에 배치해야합니다 테스트 클래스 패스 자원을 작성하기위한 디렉토리 src/test/resources디렉토리.
구성 파일의 구성과 같이 단위 테스트의 준비를 위해, 우리는 봄 부팅 스타터 테스트 종속성을 추가해야합니다.

<dependency>
   <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 
XML

Gradle을 사용자가 할 수 build.gradle 다음 파일 종속성을 추가합니다.

testCompile('org.springframework.boot:spring-boot-starter-test')

테스트 케이스를 작성하기 전에 먼저 RESTful 웹 서비스를 구축해야한다. RESTful 웹 서비스를 구축에 대한 자세한 내용은 주어진이 튜토리얼의 같은 장을 참조하십시오.

기록부 시험을 REST 제어기

이 섹션에서는 REST 컨트롤러에 대한 단위 테스트를 작성하는 방법을 살펴 보자.
첫째, 우리는 MockMvc를 사용하여 추상 웹 응용 프로그램 컨텍스트를 만드는 데 사용되는 클래스 파일을 작성해야하고, 정의 mapToJson()mapFromJson()방법은 자바 JSON 문자열과 자바 객체로 JSON 문자열 객체로 변환 할 수 있습니다.

package com.yiibai.demo;

import java.io.IOException; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = DemoApplication.class) @WebAppConfiguration public abstract class AbstractTest { protected MockMvc mvc; @Autowired WebApplicationContext webApplicationContext; protected void setUp() { mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } protected String mapToJson(Object obj) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.writeValueAsString(obj); } protected <T> T mapFromJson(String json, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(json, clazz); } } 
자바

다음에, 확장 된 물품 AbstractTest의 클래스 파일을, 각각의 방법 (예컨대 GET, POST, PUTDELETE) 기록 단위 테스트.

우리는 GET API 테스트 코드 아래에 주어진다. 이 API는 제품의 목록을 확인하는 데 사용됩니다.

@Test
public void getProductsList() throws Exception { String uri = "/products"; MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(uri) .accept(MediaType.APPLICATION_JSON_VALUE)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); Product[] productlist = super.mapFromJson(content, Product[].class); assertTrue(productlist.length > 0); } 
자바

POST API 테스트 코드는 다음입니다. 이 API는 제품을 만드는 데 사용됩니다.

@Test
public void createProduct() throws Exception { String uri = "/products"; Product product = new Product(); product.setId("3"); product.setName("Ginger"); String inputJson = super.mapToJson(product); MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(uri) .contentType(MediaType.APPLICATION_JSON_VALUE).content(inputJson)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(201, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is created successfully"); } 
자바

우리는 PUT의 API 테스트 코드 아래에 주어진다. 이 API는 기존 제품을 업데이트하는 데 사용됩니다.

@Test
public void updateProduct() throws Exception { String uri = "/products/2"; Product product = new Product(); product.setName("Lemon"); String inputJson = super.mapToJson(product); MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(uri) .contentType(MediaType.APPLICATION_JSON_VALUE).content(inputJson)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is updated successsfully"); } 
자바

삭제 API 테스트 코드는 다음입니다. 이 API는 기존 제품을 삭제합니다.

@Test
public void deleteProduct() throws Exception { String uri = "/products/2"; MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(uri)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is deleted successsfully"); } 
자바

다음과 같이 전체 테스트 컨트롤러 클래스 파일의 코드입니다 -

package com.yiibai.demo;

import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import com.yiibai.demo.model.Product; public class ProductServiceControllerTest extends AbstractTest { @Override @Before public void setUp() { super.setUp(); } @Test public void getProductsList() throws Exception { String uri = "/products"; MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(uri) .accept(MediaType.APPLICATION_JSON_VALUE)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); Product[] productlist = super.mapFromJson(content, Product[].class); assertTrue(productlist.length > 0); } @Test public void createProduct() throws Exception { String uri = "/products"; Product product = new Product(); product.setId("3"); product.setName("Ginger"); String inputJson = super.mapToJson(product); MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(uri) .contentType(MediaType.APPLICATION_JSON_VALUE) .content(inputJson)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(201, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is created successfully"); } @Test public void updateProduct() throws Exception { String uri = "/products/2"; Product product = new Product(); product.setName("Lemon"); String inputJson = super.mapToJson(product); MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(uri) .contentType(MediaType.APPLICATION_JSON_VALUE) .content(inputJson)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is updated successsfully"); } @Test public void deleteProduct() throws Exception { String uri = "/products/2"; MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(uri)).andReturn(); int status = mvcResult.getResponse().getStatus(); assertEquals(200, status); String content = mvcResult.getResponse().getContentAsString(); assertEquals(content, "Product is deleted successsfully"); } } 
자바

실행 JAR 파일을 만들고 봄 부팅 응용 프로그램을 실행하기 위해 다음과 같이 Gradle을 또는 메이븐 명령을 사용하여 -

메이븐를 들어, 아래 명령 -

mvn clean install
껍질

지금, 당신은 콘솔 창에 테스트 결과를 참조하십시오.

추천

출처www.cnblogs.com/borter/p/12423886.html