JUnit 测试 sprinboot controller

一、 pom.xml 添加依赖

   <dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<!--<scope>test</scope>-->
   </dependency>
   <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier><!-- 指定jdk版本 -->        
    </dependency>

 

二、 User 实体类

package org.com.sande.provider.user.model.domain;

import java.util.Date;

public class User {
	private Integer id;
	// 注册的用户名
	private String userName;
	// 创建时间
	private Date gmtCreate;
	// 修改时间
	private Date gmtModified;
	// 排序
	private Integer sort;
	// 用户类型(1穷人,2普通人
	private Integer userType;
	// 用户等级(0:普通用户,1:爱心使者,2:传递使者,3,传递大使,4商家,99:扶贫人士)
	private Integer userLevel;
	// 注册的手机号码
	private String phone;
	// 电子邮箱地址
	private String email;
	// 真实姓名
	private String realName;
	// 密码盐
	private String salt;
	// 登录密码
	private String userPassword;
	// 昵称
	private String nickname;
	// 头像地址
	private String headImage;
	// 性别
	private Integer sex;
	// 推荐人手机号码
	private String referrerPhone;
	// 固定电话
	private String fixedPhone;
	// 个人二维码
	private String qrCode;
	// 区域ID
	private Integer  regionId;
	// 区域全地址
	private String regionMergerName;
	// 详细地址
	private String detailedAddress;
	// 用户状态
	private Integer userStatus;
	
	
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getId() {
		return this.id;
	}
	public void setUserName(String userName) {
		this.userName=userName;
	}
	public String getUserName() {
		return this.userName;
	}
	public void setGmtCreate(Date gmtCreate) {
		this.gmtCreate = gmtCreate;
	}
	public Date getGmtCreate() {
		return this.gmtCreate;
	}
	public void setGmtModified(Date gmtModified) {
		this.gmtModified =  gmtModified;
	}
	public Date getGmtModified() {
		return gmtModified;
	}
	public void setSort(Integer sort) {
		this.sort =  sort;
	}
	public Integer getSort() {
		return this.sort;
	}
	public void setUserType(Integer userType) {
		this.userType = userType;
	}
	public Integer getUserType() {
		return userType;
	}
	public void setUserLevel(Integer userLevel) {
		this.userLevel = userLevel;
	}
	public Integer getUserLevel() {
		return this.userLevel;
	} 
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getPhone() {
		return this.phone;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEmail() {
		return this.email;
	}
    public void setRealName(String realName) {
    	this.realName = realName;
    }
    public String getRealName() {
    	return this.realName;
    }
	public void setSalt(String salt) {
		this.salt=salt;
	}
	public String getSalt() {
		return this.salt;
	}
    public void setUserPassword(String userPassword) {
    	this.userPassword =  userPassword;
    }
    public String getUserPassword() {
    	return this.userPassword;
    }
    public void setNickname(String nickname) {
    	this.nickname =  nickname;
    }
    public String getNickname() {
    	return this.nickname;
    }
    public void setHeadImage(String headImage) {
    	this.headImage = headImage;
    }
    public String getHeadImage() {
    	return this.headImage;
    }
    public void setSex(Integer sex) {
    	this.sex = sex;
    }
    public Integer getSex() {
    	return this.sex;
    }
	public void setReferrerPhone(String referrerPhone) {
		this.referrerPhone = referrerPhone;
	}
	public String getReferrerPhone() {
		return this.referrerPhone;
	}
	public void setFixedPhone(String fixedPhone) {
		this.fixedPhone = fixedPhone;
	}
	public String getFixedPhone() {
		return this.fixedPhone;
	}
	public void setQrCode(String qrCode) {
		this.qrCode =  qrCode;
	}
	public String getQrCode() {
		return this.qrCode;
	}
	public void setRegionId(Integer regionId) {
		this.regionId = regionId;
	}
	public Integer getRegionId() {
		return this.regionId;
	}
	public void setRegionMergerName(String regionMergerName) {
		this.regionMergerName = regionMergerName;
	}
	public String getRegionMergerName() {
		return regionMergerName;
	}
	public void setDetailedAddress(String detailedAddress) {
		this.detailedAddress = detailedAddress;
	}
	public String getDetailedAddress() {
		return detailedAddress;
	}
	public void setUserStatus(Integer userStatus) {
		this.userStatus = userStatus;
	}
	public Integer getUserStatus() {
		return userStatus;
	}

	
	
}

三、被测试的 controller

package org.com.sande.provider.user.Controller;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;

import javax.annotation.Resource;

import org.com.sande.provider.user.model.domain.User;
import org.com.sande.provider.user.service.UserService;
import org.junit.runners.Parameterized.Parameter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class UserController {
	
	@Resource
	private UserService userService;
	
	@RequestMapping("/userRegister")
	public ModelAndView userRegister() {
        ModelAndView mv = new ModelAndView("register");
		return mv;
	}
	

	@RequestMapping(value="/register",method = {RequestMethod.POST,RequestMethod.GET})
	public String register(@RequestBody User user) {
		try {
			String message="";
			User user2 = new User();
			
			//System.out.println("@RequestBody String user:" + user);
			
			user2.setPhone(user.getPhone());
			user2.setUserPassword(user.getUserPassword());
			user2.setReferrerPhone(user.getReferrerPhone());
			user2.setSalt("test");
			user2.setUserName(user.getUserName());
			System.out.println("手机号码:" + user2.getPhone());
			System.out.println("密码:" + user2.getUserPassword());
			System.out.println("推荐人:" + user2.getReferrerPhone());
			System.out.println("推荐人:" + user2.getUserName());
			message=userService.addUser(user2);
			return message;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return "系统异常";
		}
		
		
	}
	
	/*
	@RequestMapping(value="/register",method = {RequestMethod.POST,RequestMethod.GET})
	public String register(@RequestParam("phone") String  phone,
			@RequestParam("password") String password,@RequestParam("referrerPhone") 
	        String referrerPhone) {
		try {
			String message;
			User user2 = new User();
			
			user2.setPhone(phone);
			user2.setUserPassword(password);
			user2.setReferrerPhone(referrerPhone);
			user2.setSalt("test");
			System.out.println("手机号码:" + user2.getPhone());
			System.out.println("密码:" + user2.getUserPassword());
			System.out.println("推荐人:" + user2.getReferrerPhone());
			message=userService.addUser(user2);
			return message;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return "系统异常";
		}
		
		
	} */
	
	@RequestMapping("/login")
	public String login(User user) {
		return null;
	}
	
	@RequestMapping("/updatePassword")
	public String updatePassword(User user) {
		return null;
	}
	
	@RequestMapping("/getUser")
	public User getUser(@RequestParam("phone") String phone) {
		return userService.getUserByPhone(phone);
	}
}

四、测试类

package org.com.sande.provider.user;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.aspectj.lang.annotation.Before;
import org.com.sande.provider.user.model.domain.User;
import org.junit.Ignore;
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.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import junit.framework.Assert;
import net.sf.json.JSONObject;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = UserApplication.class)
@WebAppConfiguration
public class UserControllerTest {
	private MockMvc mockMvc;
	
	@Autowired
	private WebApplicationContext webApplicationContext;
	
	@Before(value = "before")
	public void before() {
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
	}
 
	@Ignore
	@Test
	public void testUserRegister() throws Exception {
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
		MvcResult mvcResult = mockMvc.perform(
				MockMvcRequestBuilders.get("/userRegister")
				).andReturn();
		
		int status =  mvcResult.getResponse().getStatus();
		String responseString = mvcResult.getResponse().getContentAsString();
		
		Assert.assertEquals("请求错误", 200,status);
		Assert.assertEquals("返回结果不一致", "register",responseString);
		
		//fail("Not yet implemented");
	}
	
	/*JUnit 发送 JSON 格式的参数给  Controller */
	@Test
	public void testRegister() throws Exception {
		
		User user = new User();
		user.setPhone("13826451098");
		user.setUserPassword("123456");
		user.setUserName("虫虫");
		
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
		
        String requestJson = JSONObject.fromObject(user).toString();

		/*
		String mvcResult = mockMvc.perform(
				MockMvcRequestBuilders.post("/register")
				.contentType(MediaType.APPLICATION_JSON).content(requestJson)).andDo(print())
                .andExpect(status().isOk()
				).andReturn().getResponse().getContentAsString();*/
		
        MvcResult mvcResult = mockMvc.perform(
				MockMvcRequestBuilders.post("/register")
				.contentType(MediaType.APPLICATION_JSON).content(requestJson)).andDo(print())
                .andExpect(status().isOk()
				).andReturn();
        String message = mvcResult.getResponse().getContentAsString();

		int status =  mvcResult.getResponse().getStatus();
		Assert.assertEquals("请求错误", 200,status);
		Assert.assertEquals("返回结果不一致", "注册成功",message);
		
		//fail("Not yet implemented");
	}

	/*JUnit 接收 Controller 返回的 JSON 数据*/
	@Test
	public void testGetUser() throws Exception {
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
		ResultActions mvcResult = mockMvc.perform(
				MockMvcRequestBuilders.post("/getUser")
				.contentType(MediaType.APPLICATION_FORM_URLENCODED)
				.param("phone", "13826451098")
		        ).andExpect(status().isOk())
		        .andExpect(jsonPath("$.phone", is("13826451098"))) 
		        .andExpect(jsonPath("$.userPassword", is("123456")))
		        .andExpect(jsonPath("$.userName", is("虫虫")));
		
		
		
		
		
	}

	@Test
	public void testLogin() {
		fail("Not yet implemented");
	}

	@Test
	public void testUpdatePassword() {
		fail("Not yet implemented");
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值