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>

github

spring-boot Test for Controller的更多相关文章

  1. Spring Boot Web 开发@Controller @RestController 使用教程

    在 Spring Boot 中,@Controller 注解是专门用于处理 Http 请求处理的,是以 MVC 为核心的设计思想的控制层.@RestController 则是 @Controller ...

  2. Spring boot进阶-配置Controller、interceptor...

    1.配置SpringBootApplication(对spring boot来说这是最基本) package io.github.syske.springboot31; import org.spri ...

  3. 为spring boot 写的Controller中的rest接口配置swagger

    1.pom.xml文件中加入下列依赖: <dependency> <groupId>io.springfox</groupId> <artifactId> ...

  4. spring boot之入门Controller常用注解

    Controller常用注解 @Controller  处理http请求 @RestController Spring4之后新加的注解,原来返回json数据需要@ResponseBody配合@Cont ...

  5. Spring Boot—11控制器Controller

    package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowire ...

  6. spring boot controller路由 url 扫描不到问题

    spring boot项目出现controller的路由没被注册,原因:启动类application跟controller不在一个包中,扫描不到controller, 如启动类在com.oyx.a,c ...

  7. Springboot 系列(一)Spring Boot 入门篇

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 由于 J2EE 的开发变得笨重,繁多的配置, ...

  8. Spring Boot 16 条最佳实践

    Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...

  9. Spring Boot 最流行的 16 条实践解读,你值得收藏!

    Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...

  10. Spring Boot 2.0 学习笔记(一)——JAVA EE简介

    本章内容:JAVA EE>Spring>Spring Boot 一.JAVA EE简介 1.1 Java ee优点:结束了Web开发的技术无序状态,让程序员.架构师用同一种思维去思考如何架 ...

随机推荐

  1. PHP面试题一

    http://www.viphper.com/?p=28 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s&qu ...

  2. net user 修改密码的坑

    不多说 直接上图 自己偷懒修改 admin的密码.. 结果没注意 这个地方 能够输入全角字符. 造成密码 实质上是全角的 标点符号 ... 以后一定注意一些. 里面的坑..说多了 都是浪费时间 另外 ...

  3. IPV6 国内进展情况

    国家下一代互联网产业技术创新战略联盟(以下简称“产业联盟”),近日在北京发布了我国首份IPv6业务用户体验监测报告(以下简称<报告>).该<报告>监测了我国固定宽带的IPv6普 ...

  4. sublime 对vue的高亮显示

    前提概要: sublime的下载地址:http://www.sublimetext.com/ notepad++下载地址:https://notepad-plus-plus.org/ .vue的文件在 ...

  5. echarts 地图 离线json包分享

    最近,项目中需要用到地图,由于项目的特殊性,只能使用内网获取数据. 然而,echarts官网上的离线地图包(http://echarts.baidu.com/download-map.html)早在一 ...

  6. 当给属性添加final 时候 则无法进行第二次值的修改

  7. MT【134】待定系数

    已知\(a,b>0\)且\(ab(a+b)=4\),求\(2a+b\)的最小值______. 解答:\(\sqrt{3}(2a+b)\ge(\sqrt{3}+1)a+b+(\sqrt{3}-1) ...

  8. 【刷题】BZOJ 2730 [HNOI2012]矿场搭建

    Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...

  9. 【刷题】BZOJ 2243 [SDOI2011]染色

    Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如 ...

  10. 51nod 1295 XOR key | 可持久化Trie树

    51nod 1295 XOR key 这也是很久以前就想做的一道板子题了--学了一点可持久化之后我终于会做这道题了! 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X ...