一、 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");
}
}