Spring Boot RESTful API(上篇)- MockMvc 单元测试
2017-12-12 00:00
751 查看
构建微服务 SpringBoot RESTful API 与单元测试
1、 构建一个SpringBoot项目,引入依赖jar配置 pom.xml
2、创建一个User.java实体
3、编写UserController.java
4、编写测试类UserControllerTest.java
5、运行结果:
1、 构建一个SpringBoot项目,引入依赖jar配置 pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> </dependencies>
2、创建一个User.java实体
public class User { private String id; private String name; private Integer age; // get set 省略 }
3、编写UserController.java
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by nasheng.yun on 2017/12/12. */ @RestController @RequestMapping(value = "user") public class UserController { // 创建线程安全的map static Map<String,User> users = new ConcurrentHashMap<>(); /** * 查询用户列表 * @return */ @GetMapping(value = "list") public List<User> list(){ List<User> userList = new ArrayList<>(users.values()); System.out.println("UserController.list"); return userList; } /** * 添加用户 * @param user * @return */ @PostMapping("post") public String post(@ModelAttribute User user){ users.put(user.getId(),user); System.out.println("UserController.post"); return "success"; } /** * 更新用户 * @param id * @param user * @return */ @PutMapping("put/{id}") public String put(@PathVariable String id,@ModelAttribute User user){ User u = users.get(id); u.setName(user.getName()); u.setAge(user.getAge()); users.put(id,u); System.out.println("UserController.put"); return "success"; } /** * 查询用户详情 * @param id * @return */ @GetMapping(value = "detail/{id}") public User detail(@PathVariable String id){ System.out.println("UserController.detail"); return users.get(id); } /** * 删除用户 * @param id * @return */ @DeleteMapping(value = "del/{id}") public String delete(@PathVariable String id){ users.remove(id); System.out.println("UserController.delete"); return "success"; } }
4、编写测试类UserControllerTest.java
import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 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; /** * Created by nasheng.yun on 2017/12/12. */ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public class UserControllerTest { private MockMvc mvc; @Before public void setUp(){ mvc = MockMvcBuilders.standaloneSetup(new UserController()).build(); } @Test public void testUserController() throws Exception { // 1.查询列表 mvc.perform(MockMvcRequestBuilders.get("/user/list")) .andExpect(MockMvcResultMatchers.status().isOk());// 判断响应状态是否成功 // 2.添加 mvc.perform(MockMvcRequestBuilders.post("/user/post") .param("id","3") .param("name","nasheng.yun") .param("age","18")) .andExpect(MockMvcResultMatchers.status().isOk()); // 3.更新 mvc.perform(MockMvcRequestBuilders.put("/user/put/3") .param("name","NASHENG.YUN") .param("age","20")) .andExpect(MockMvcResultMatchers.status().isOk()); // 3.详情 mvc.perform(MockMvcRequestBuilders.get("/user/detail/1")) .andExpect(MockMvcResultMatchers.status().isOk()); // 4.删除 mvc.perform(MockMvcRequestBuilders.delete("/user/del/1")) .andExpect(MockMvcResultMatchers.status().isOk()); // 5.查询列表 mvc.perform(MockMvcRequestBuilders.get("/user/list")) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print());// 打印结果 } }
5、运行结果:
2017-12-13 09:23:21.585 INFO 25140 --- [ main] o.s.mock.web.MockServletContext : Initializing Spring FrameworkServlet '' 2017-12-13 09:23:21.585 INFO 25140 --- [ main] o.s.t.web.servlet.TestDispatcherServlet : FrameworkServlet '': initialization started 2017-12-13 09:23:21.586 INFO 25140 --- [ main] o.s.t.web.servlet.TestDispatcherServlet : FrameworkServlet '': initialization completed in 0 ms UserController.list UserController.post UserController.put UserController.detail UserController.delete UserController.list MockHttpServletRequest: HTTP Method = GET Request URI = /user/list Parameters = {} Headers = {} Handler: Type = com.example.demo.UserController Method = public java.util.List<com.example.demo.User> com.example.demo.UserController.list() Async: Async started = false Async result = null Resolved Exception: Type = null ModelAndView: View name = null View = null Model = null FlashMap: Attributes = null MockHttpServletResponse: Status = 200 Error message = null Headers = {Content-Type=[application/json;charset=UTF-8]} Content type = application/json;charset=UTF-8 Body = [{"id":"3","name":"NASHENG.YUN","age":20}] Forwarded URL = null Redirected URL = null Cookies = []
相关文章推荐
- Spring Boot-构建一个复杂的RESTful API及单元测试
- springboot【3】web开发之构建RESTful API与单元测试
- Spring Boot构建RESTful API与单元测试
- 详解SpringBoot restful api的单元测试
- Spring Boot构建RESTful API与单元测试
- 企业分布式微服务云SpringCloud SpringBoot mybatis (三)Spring Boot构建RESTful API与单元测试
- SpringBoot学习系列 | 构建一个较为复杂的RESTful API以及单元测试
- SpringCloud SpringBoot mybatis 分布式微服务(三)Spring Boot构建RESTful API与单元测试
- 企业分布式微服务云SpringCloud SpringBoot mybatis (三)Spring Boot构建RESTful API与单元测试
- Spring Boot构建RESTful API与单元测试
- Spring Boot构建RESTful API与单元测试
- rest-assured : Restful API 测试利器 - 真正的黑盒单元测试(跟Spring-Boot更配哦,更新至spring-boot1.4.1)
- Spring Boot构建RESTful API与单元测试
- Spring Boot构建RESTful API与单元测试
- Spring Boot 构建一个较为复杂的RESTful API以及单元测试
- spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别
- springboot-restful api-swagger2 ui-实战
- springboot集成swagger2构建RESTful API文档
- 使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能
- SpringBootRESTfulAPI平台项目-演示版01