spring-boot Test for Controller
spring-boot controller 测试示例:
单元测试类
package com.zzhi; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.sun.org.apache.xerces.internal.xs.LSInputList;
import javafx.application.Application;
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.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; /**
* Created by zhangzhii on 2017/7/13.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MaventestApplication.class)
@WebAppConfiguration
public class HomeControllerTest {
public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); @Autowired
private WebApplicationContext wac; private MockMvc mockMvc; @Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
} @Test
public void test1() throws Exception {
String name="zzhi";
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/test1?name="+ name)).
andDo(print()).andReturn();
System.out.println(result.getResponse().getContentAsString());
} @Test
public void test02() throws Exception { User user = new User(, "zzhi");
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBody = ow.writeValueAsString(user);
System.out.println(requestBody);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/test2?name=zzhi").
contentType(APPLICATION_JSON_UTF8).content(requestBody))
.andDo(print()).andReturn();
System.out.println(result);
} @Test
public void test03() throws Exception { List<User> list = new ArrayList<>();
list.add(new User(, "zzhi"));
list.add(new User(, "wang"));
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBody = ow.writeValueAsString(list);
System.out.println(requestBody);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/test3?name=zzhi").
contentType(APPLICATION_JSON_UTF8).content(requestBody))
.andDo(print()).andReturn();
System.out.println("结果:"+result.getResponse().getContentAsString());
} @Test
public void test04() throws Exception { Order order=new Order(); Address address=new Address();
address.setAdd1("陕西西安"); List<User> users = new ArrayList<>();
users.add(new User(, "zzhi"));
users.add(new User(, "wang")); order.setUsers(users);
order.setAddress(address);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBody = ow.writeValueAsString(order);
System.out.println(requestBody);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/test4?age=28").
param("name","张智").
contentType(APPLICATION_JSON_UTF8).content(requestBody))
.andDo(print()).andReturn();
System.out.println("结果:"+result.getResponse().getContentAsString());
}
}
Controller 类
package com.zzhi; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest;
import java.util.List; /**
* Created by zhangzhii on 2017/7/12.
*/
@RestController()
public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @RequestMapping("/index")
@ResponseBody
public String Home() {
logger.info("home/index 开始");
return "hello world 111"; } @RequestMapping("/test1")
@ResponseBody
public String test1(String name) {
return name; }
@RequestMapping(
// consumes="application/json",
// produces="application/json",
method=RequestMethod.POST,
value="/test2")
@ResponseBody
public String test2(@RequestBody User user,String name) { return user.toString();
} @RequestMapping(
method=RequestMethod.POST,
value="/test3")
@ResponseBody
public String test3(@RequestBody List<User> users,String name) { return Integer.toString( users.size());
} @RequestMapping(
method=RequestMethod.POST,
value="/test4")
@ResponseBody
public String test4(HttpServletRequest request,@RequestBody Order order, String age) { String name= request.getParameter("name");
return age;
} }
PO:
package com.zzhi; /**
* Created by zhangzhii on 2017/7/14.
*/
public class Address { public Address()
{ } @Override
public String toString() {
return "Address{" +
"add1='" + add1 + '\'' +
'}';
} public String getAdd1() {
return add1;
} public void setAdd1(String add1) {
this.add1 = add1;
} private String add1;
}
package com.zzhi; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; /**
* Created by zhangzhii on 2017/7/14.
*/
public class Order { public Order(){ } public void setUsers(List<User> users) {
this.users = users;
}
@JsonProperty("users")
private List<User> users; public Address getAddress() {
return address;
} public void setAddress(Address address) {
this.address = address;
} private Address address; public List<User> getUsers() {
return users;
}
}
package com.zzhi; import java.util.Date; /**
* Created by zhangzhii on 2017/7/14.
*/
public class User { public User(){ }
public User(int age ,String name)
{
this.age=age;
this.name=name;
this.createTime= new Date();
} private int age;
private String name; @Override
public String toString() {
return "User{" +
"age=" + age +
", name='" + name + '\'' +
", createTime=" + createTime +
'}';
} public Date getCreateTime() {
return createTime;
} public void setCreateTime(Date createTime) {
this.createTime = createTime;
} private Date createTime; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} }
pox:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.</version>
</dependency>
</dependencies>
spring-boot Test for Controller的更多相关文章
- Spring Boot Web 开发@Controller @RestController 使用教程
在 Spring Boot 中,@Controller 注解是专门用于处理 Http 请求处理的,是以 MVC 为核心的设计思想的控制层.@RestController 则是 @Controller ...
- Spring boot进阶-配置Controller、interceptor...
1.配置SpringBootApplication(对spring boot来说这是最基本) package io.github.syske.springboot31; import org.spri ...
- 为spring boot 写的Controller中的rest接口配置swagger
1.pom.xml文件中加入下列依赖: <dependency> <groupId>io.springfox</groupId> <artifactId> ...
- spring boot之入门Controller常用注解
Controller常用注解 @Controller 处理http请求 @RestController Spring4之后新加的注解,原来返回json数据需要@ResponseBody配合@Cont ...
- Spring Boot—11控制器Controller
package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowire ...
- spring boot controller路由 url 扫描不到问题
spring boot项目出现controller的路由没被注册,原因:启动类application跟controller不在一个包中,扫描不到controller, 如启动类在com.oyx.a,c ...
- Springboot 系列(一)Spring Boot 入门篇
注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 由于 J2EE 的开发变得笨重,繁多的配置, ...
- Spring Boot 16 条最佳实践
Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...
- Spring Boot 最流行的 16 条实践解读,你值得收藏!
Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...
- Spring Boot 2.0 学习笔记(一)——JAVA EE简介
本章内容:JAVA EE>Spring>Spring Boot 一.JAVA EE简介 1.1 Java ee优点:结束了Web开发的技术无序状态,让程序员.架构师用同一种思维去思考如何架 ...
随机推荐
- Enterprise Library 5.0 参考源码索引
http://www.projky.com/entlib/5.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...
- Scrum 5.0
5.0--------------------------------------------------- 1.团队成员完成自己认领的任务. 2.燃尽图:理解.设计并画出本次Sprint的燃尽图的理 ...
- 树莓派安装、卸载docker
1.下载安装脚本(官方说明的是不能使用debian的系统的安装方式安装): curl -fsSL get.docker.com -o get-docker.sh 2.安装: sudo sh get-d ...
- http和https的优缺点,区别与工作原理
文章内容 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可 ...
- JS 字符串切割成数组
var cheLin = "字*符*串" // console.log(cheLin) var array = cheLin.split("*"); arra ...
- mappers标签引入映射器的四种方式
第一种方式:mapper标签,通过resource属性引入classpath路径的相对资源 <!-- Using classpath relative resources --> < ...
- hbase 分页过滤(新老API的差别)
在hbase2.0以前分页过滤必须以上一次的最后一行+空字节数组作为下一次的起始行, 因为scan扫描的时候是包含起始行的,为了既能准确定位起始行,但又不重复把上一次的最末一行加入下一页, 所以,权威 ...
- Vue设置不同的环境发布程序
原文地址: http://www.cnblogs.com/JimmyBright/p/7307486.html 通常应用程序上线都会经过开发环境.测试环境.生产环境三个阶段,三个环境通常会对应有三个不 ...
- Web Service(上)
1.XML CDATA指不应由XML解析器进行解析的文本数据. 在XML元素中,<和&是非法的.解析器会把字符<解释为新元素的开始,把字符&解释为字符实体的开始. 某些文本 ...
- Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
ref from: Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法http://blog ...