一、利用springBoot 脚手架创建一个springBoot项目(地址:start.spring.io)
二、引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
三、新建一个Controller包,写一个测试的Controller
package com.gpdi.controller;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
/**
*
* @param
* name 用户姓名
* request Http对象
*
* @return String
*
*/
@GetMapping(value = "getStringByName")
public String getStringByName(String name,HttpServletRequest request) {
return "Hello," + name+" ,今天是"+request.getAttribute("date");
}
@GetMapping(value = "getStringByPassString")
public String getStringByPassString(HttpServletRequest request) {
Object name=request.getAttribute("name");
return "Hello," + name;
}
@PostMapping(value = "getString")
public String getString() {
return "talk with friend";
}
@GetMapping(value = "getList")
public List getList() {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
return list;
}
@PostMapping(value = "passByJson")
public String passByJson(@RequestBody JSONObject jsonParam){
String name=jsonParam.getString("name");
int id=jsonParam.getInteger("id");
System.out.println("id"+id+"name "+name);
return jsonParam.toJSONString();
}
}
四、建立测试工具类
package com.gpdi;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gpdi.controller.UserController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class BatteryThreadApplicationTests {
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
private ObjectMapper mapper = new ObjectMapper();
@Before
public void setupMockMvc() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
/**
* @description:不含参数的get请求 return 返回一个List集合
*/
@Test
public void testList() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/getList")).andDo(MockMvcResultHandlers.print());
}
/**
* @description: 通过Attribute 传递参数
* param String name
*/
@Test
public void getStringByPassString() throws Exception {
mockMvc.perform(MockMvcRequestBuilders
//设置请求方法类型和方法名称
.get("/getStringByPassString")
//设置请求的参数
.requestAttr("name", "whs"))
.andDo(MockMvcResultHandlers.print());
}
/**
* param: 通过Http设置param参数
*/
@Test
public void getStringByName() throws Exception {
mockMvc.perform(MockMvcRequestBuilders
//设置请求方法类型和方法名称
.get("/getStringByName")
//设置请求的参数
.requestAttr("date", "2019年8月2号")
//通过设置http对象的参数信息
.param("name", "whs")
).andDo(MockMvcResultHandlers.print());
}
/**
* @description: 传递一个json类型的数据进行测试
*/
@Test
public void passByJson() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/passByJson")
//设置传输的媒体类型
.contentType(MediaType.APPLICATION_JSON_UTF8)
//设置传输的字段
.content("{\"name\":\"wwww\",\"id\":\"1\"}")
)
// .andExpect(MockMvcResultMatchers.status().isOk())
// .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andDo(MockMvcResultHandlers.print());
}
}