为什么80%的码农都做不了架构师?>>>   

spring mvc的简单单元测试,说白了就是测试spring mvc的controller.

先参考两篇帖子:

1.http://spring.io/blog/2011/06/21/spring-3-1-m2-testing-with-configuration-classes-and-profiles

2.http://spring.io/blog/2012/11/07/spring-framework-3-2-rc1-new-testing-features

实践:

UserController.java

package com.test.web;
import java.io.File;
import java.io.IOException;
import java.util.List;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
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.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import com.test.domain.User;
import com.test.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController{private static final String FILES_DIR="e:/";@Resourceprivate UserService userService;@RequestMapping("/save")public String save(User user) {userService.save(user);return "result";}@RequestMapping("/getUser")public @ResponseBody User getUser(HttpServletRequest request,@RequestBody User user) {System.out.println("AAAAAAA::"+user);request.setAttribute("data1",user);return user;}@RequestMapping("/getUsers")public @ResponseBody List<User> getUsers(HttpServletRequest request,@RequestBody List<User> users) {System.out.println(users.getClass().getName());for (User user : users) {System.out.println("BBBBBBBB::"+user);}request.setAttribute("data2", users);return users;}@RequestMapping(value = "/upload", method = RequestMethod.POST)public String add(HttpServletRequest request,@RequestParam("file") MultipartFile file) {//System.out.println("real path::"+request.getServletContext().getRealPath("/"));String filename=file.getOriginalFilename();File tmpFile=new File(FILES_DIR+filename);if(filename!=null&&!file.isEmpty()){try {FileCopyUtils.copy(file.getBytes(), tmpFile);System.out.println("上传成功");} catch (IOException e) {e.printStackTrace();}}return "result";}}

2.UserControllerTest.java

package com.test.web;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.fileUpload;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.ContextConfiguration;
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.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import com.test.config.AppConfig;
import com.test.domain.User;
import com.test.util.JsonUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes={ AppConfig.class})
public class UserControllerTest {@Autowiredprivate WebApplicationContext webApplicationContext;private MockMvc mockMvc;@Beforepublic void init(){mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();}@Testpublic void printBeans(){String[] beans=webApplicationContext.getBeanDefinitionNames();for (String bean : beans) {System.out.println(bean);}}/*测试以普通请求参数发送的请求*/@Testpublic void testSave() throws Exception {mockMvc.perform(post("/user/save").param("id", "123").param("username", "you")).andExpect(status().isOk()).andExpect(view().name("result"));}/*测试将数据以JSON格式写入请求体发送的请求*/@Testpublic void testGet() throws Exception {mockMvc.perform(post("/user/getUser").contentType(JsonUtil.APPLICATION_JSON_UTF8).content(JsonUtil.convertObjectToJsonBytes(new User(22,"werwr")))).andExpect(status().isOk());}/*测试将数据以JSON格式写入请求体发送的请求*/@Testpublic void testGetAll() throws IOException, Exception {List<User> list=new ArrayList<User>();list.add(new User(23,"你爱我"));list.add(new User(25,"我不爱你"));mockMvc.perform(post("/user/getUsers").contentType(JsonUtil.APPLICATION_JSON_UTF8).content(JsonUtil.convertObjectToJsonBytes(list))).andExpect(status().isOk());}/*测试文件上传发送的请求*/@Testpublic void testUpload() throws Exception{MockMultipartFile file = new MockMultipartFile("file", "orig.txt", null, "bar".getBytes());mockMvc.perform(fileUpload("/user/upload").file(file)).andExpect(status().isOk());}
}

以上就贴出了spring mvc的单元测试最核心内容和举例的最核心代码.

完整源代码:http://download.csdn.net/detail/xiejx618/7037623

顺便贴一下spring junit(非controller简单bean)

package com.test.service;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.test.domain.User;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class UserServiceTest {@Configuration@ComponentScan(basePackages={"com.test.service"})static class ContextConfiguration {}@Resourceprivate UserService userService;@Testpublic void testSave(){userService.save(new User(123,"xxx"));}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/mayude/blog/503638

spring mvc+junit相关推荐

  1. Spring MVC控制器JUnit测试

    JUnit测试Spring MVC控制器并非易事 . 但是最近,一个新项目 (即将在Spring推出)提供了新工具来简化此工作. 这篇文章说明了如何通过JUnit测试来测试一个简单的控制器. 该代码是 ...

  2. idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!

    本章节主要讲解以下两部分内容: 1.Mock 测试简介 2.测试用例演示 一.Mock 测试简介 1.什么是 mock 测试 在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个「虚拟的对象」 ...

  3. Spring MVC实现Junit Case

    Spring MVC中编写单元测试(WEB项目): 1. 首先开发一个基类,用于载入配置文件.以下所有的测试实现类都要继承这个类 Java代码   package com.yusj.basecase; ...

  4. Spring MVC参数化测试 - Junit Parameterized

    参考文章:Spring MVC全注解配置 - 无web.xml 单元测试的目的,简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期修改后(不论是增加新功能,修改bug), ...

  5. Java之Spring mvc详解(非原创)

    文章大纲 一.Spring mvc介绍 二.Spring mvc代码实战 三.项目源码下载 四.参考文章 一.Spring mvc介绍 1. 什么是springmvc   springmvc是spri ...

  6. Spring MVC配置

    为什么80%的码农都做不了架构师?>>>    一.传统方式配置Spring MVC (1)导入jar包 需要导入如下的jar包 junit-3.8.1.jar         sp ...

  7. Spring MVC 到 Spring BOOT 的简化之路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5aa22d1f5188255 ...

  8. 高手都这么给 Spring MVC 做单元测试!

    作者:alanshelby 来源:zhuanlan.zhihu.com/p/43260823 「一.前言」 在前面的章节我们介绍过 Junit 的使用,也了解过 spring-test,今天我们来了解 ...

  9. spring mvc 总结

    为什么80%的码农都做不了架构师?>>>    一.前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 ...

最新文章

  1. network setup service启动后自动停止_一个简单的测试环境下的自动化部署方案
  2. Python 如何在子类派生的新方法中重用父类的功能
  3. 分辨率与栅格系统的对应关系:
  4. 解决 : Shell 脚本 $‘\r‘: command not found 问题
  5. Feature Engineering 特征工程 3. Feature Generation
  6. WPF的悬停工具栏实现方案
  7. 如何建立数据平台?看上市公司的选择!
  8. AJAX技术开发Back按钮问题的应用程序
  9. tgp饥荒搭建服务器证书,饥荒:联机版服务器搭建方法 搭建TGP专属服务器教程_3DM单机...
  10. python 索引方法loc和iloc
  11. 实现简单QQ聊天功能
  12. cad文档服务器部署,云服务器安装cad
  13. 推荐一个免费下载简历模板的网站
  14. LED通信的ID识别报告
  15. 短期python培训机构
  16. 人人农场机器人v3.0测试版 正式发布
  17. python量化选股策略_牛刀小试-小市值选股策略
  18. 开吃吧无线订餐机 改变餐饮O2O外卖行业
  19. eWebEditor Manual
  20. java namevaluepair_NameValuePair方式传参数实例教程

热门文章

  1. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
  2. VS2008非托管c++访问webservice服务(以WeatherWS 天气服务 为例)
  3. 【收藏】13个CSS3快速必备开发工具
  4. linux cal 命令详解
  5. Python挑战题目,你会了吗?
  6. 如何写一个优秀的GitHub项目README文档?
  7. 车用计算机内部结构图,ecu的基本组成结构 ECU的工作过程
  8. 为什么要使用spring IOC
  9. MyBatis 缓存详解-缓存体系结构
  10. 请举例解释@Required Annotation?