单元测试
spring boot 版本为 2.2.5.RELEASE
代码如下
package com.daowei.springtest.api;
import org.hamcrest.Matchers;
import org.json.JSONObject;
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.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.junit4.SpringRunner;
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 java.nio.file.Files;
import java.nio.file.Paths;
@SpringBootTest
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
public class UserApiTest {
@Autowired
private MockMvc mockMvc;
@Before
public void beforeTest() {
System.out.println("===========================");
System.out.println("========beforeTest=========");
System.out.println("===========================");
}
// get - url 路径参数
@Test
public void findUserTest() throws Exception {
String json = "[{\"id\":111,\"createTime\":1579400718,\"creator\":null," +
"\"editor\":null,\"isDeleted\":\"no\",\"lastTime\":1579401143000,\"user\":null," +
"\"isAdmin\":null,\"name\":null,\"password\":null,\"phone\":null,\"role\":null,\"userName\":null," +
"\"userStatus\":null,\"userType\":null}]";
this.mockMvc.perform(MockMvcRequestBuilders.get("/user/find/{id}", 111))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().json(json));
}
// get - ?id=111 方式请求
@Test
public void findUser0Test() throws Exception {
String json = "[{\"id\":111,\"createTime\":1579400718,\"creator\":null," +
"\"editor\":null,\"isDeleted\":\"no\",\"lastTime\":1579401143000,\"user\":null," +
"\"isAdmin\":null,\"name\":null,\"password\":null,\"phone\":null,\"role\":null,\"userName\":null," +
"\"userStatus\":null,\"userType\":null}]";
this.mockMvc.perform(MockMvcRequestBuilders.get("/user/findById")
.param("id", "111"))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().json(json, true));
}
// post - json 格式数据
@Test
public void createUserTest() throws Exception {
JSONObject obj = new JSONObject();
obj.put("id", 3333);
obj.put("name", "sweet");
this.mockMvc.perform(MockMvcRequestBuilders.post("/user")
.content(obj.toString())
.contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content()
.string(Matchers.containsString("3333")));
}
// form-data 上传文件
@Test
public void uploadFileTest() throws Exception {
String fileName = "longzhu0.jpg";
String token = "123";
this.mockMvc.perform(MockMvcRequestBuilders.multipart("/file/upload")
.file(new MockMultipartFile("file", fileName, "text/plain", Files.readAllBytes(Paths.get(fileName))))
.param("token", token))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content()
.string(Matchers.containsString(fileName + "-" + token)));
}
}