Spring MVC中编写单元测试(WEB项目):

1. 首先开发一个基类,用于载入配置文件。以下所有的测试实现类都要继承这个类

  1. package com.yusj.basecase;
  2. import org.junit.runner.RunWith;
  3. import org.springframework.test.context.ContextConfiguration;
  4. import org.springframework.transaction.annotation.Transactional;
  5. import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
  6. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  7. /**
  8. * 配置文件载入类
  9. * @ClassName: BaseSpringTestCase
  10. * @Description: 要想实现Spring自动注入,必须继承此类
  11. * @author yusj
  12. * @date 2014年6月9日 下午3:16:44
  13. *
  14. */
  15. @RunWith(SpringJUnit4ClassRunner.class)
  16. @ContextConfiguration({
  17. "file:src/main/webapp/WEB-INF/config/applicationContext.xml",
  18. "file:src/main/webapp/WEB-INF/config/captcha-context.xml",
  19. "file:src/main/webapp/WEB-INF/config/springmvc-servlet.xml"
  20. })
  21. // 添加注释@Transactional 回滚对数据库操作
  22. @Transactional
  23. public class BaseSpringTestCase {
  24. }

用户登录测试方法UserControllerTest如下:

  1. package com.yusj.web.controller;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.fail;
  4. import java.sql.SQLException;
  5. import org.junit.Before;
  6. import org.junit.Ignore;
  7. import org.junit.Test;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.mock.web.MockHttpServletRequest;
  10. import org.springframework.mock.web.MockHttpServletResponse;
  11. import com.sim.tracker.basecase.BaseSpringTestCase;
  12. /**
  13. *
  14. * @ClassName: UserControllerTest
  15. * @Description: 测试用户控制类
  16. * @author yusj
  17. * @date 2014年5月18日
  18. *
  19. */
  20. public class UserControllerTest extends BaseSpringTestCase {
  21. // 模拟request,response
  22. private MockHttpServletRequest request;
  23. private MockHttpServletResponse response;
  24. // 注入userController
  25. @Autowired
  26. private UserController userController ;
  27. // 执行测试方法之前初始化模拟request,response
  28. @Before
  29. public void setUp(){
  30. request = new MockHttpServletRequest();
  31. request.setCharacterEncoding("UTF-8");
  32. response = new MockHttpServletResponse();
  33. }
  34. /**
  35. *
  36. * @Title:testLogin
  37. * @Description: 测试用户登录
  38. * @author yusj
  39. * @date 2014年5月18日
  40. */
  41. @Test
  42. public void testLogin() {
  43. String username= "aaaa" ;
  44. String password = "bbbb" ;
  45. try {
  46. assertEquals("loginok",userController.login(username, password, request)) ;
  47. } catch (SQLException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }

注意:如果是Maven项目,当执行Maven install时,可能会报错误,造成不能正确生成war包。此时需要在pom.xml中加入如下配置:

  1. <project>
  2. <build>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.apache.maven.plugins</groupId>
  6. <artifactId>maven-surefire-plugin</artifactId>
  7. <configuration>
  8. <testFailureIgnore>true</testFailureIgnore>
  9. </configuration>
  10. </plugin>
  11. </plugins>
  12. </build>
  13. </project>

注意:因为模拟request,response需要javax.servlet,AsycnContext类的支持,所以还需要导入javax.servlet3.0 Jar包的支持。

maven pom.xml配置代码如下:

  1. <dependencies>
  2. <dependency>
  3. <groupId>javax.servlet</groupId>
  4. <artifactId>javax.servlet-api</artifactId>
  5. <version>3.1.0</version>
  6. </dependency>
  7. </dependencies>

可以到http://www.mvnrepository.com/中输入关键字javax.servlet搜索下载。下载方式见我的另一篇文章:http://ysj5125094.iteye.com/blog/2082097

Spring MVC实现Junit Case的更多相关文章

  1. spring mvc 和junit 4集成的注意点

    常规步骤: 1.导入jar包,主要有两个,spring-test 和 junit4,主要用maven管理,直接依赖即可.可以在这个网站上进行查找或下载:http://mvnrepository.com ...

  2. Spring mvc中junit测试遇到com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException错误怎么解决

    今天遇到图片中的错误,纠结了一下,弄清楚了怎么从控制台中读取错误信息,并修改错误. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ...

  3. Spring MVC 项目搭建 -2- 添加service ,dao,junit

    Spring MVC 项目搭建 -2- 添加service ,dao,junit 1.dao public class Hero { private String name; public Strin ...

  4. JUnit+Mockito结合测试Spring MVC Controller

    [本文出自天外归云的博客园] 概要简述 利用JUnit结合Mockito,再加上spingframework自带的一些方法,就可以组合起来对Spring MVC中的Controller层进行测试. 在 ...

  5. spring Mvc + Mybatis 中使用junit

    在Spring Mvc + Mybatis的项目中我们有时候需要在测试代码中注入Dao操作数据库,对表进行增删改查,实现如下: 这是一般的maven项目项目结构 测试代码一般写在src/test/ja ...

  6. 基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

    一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJS,做了大量的研究,对前后端交互有了更深层次的认识. 今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详 ...

  7. Spring MVC 学习总结(一)——MVC概要与环境配置

    一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...

  8. [转]基于Spring + Spring MVC + Mybatis 高性能web构建

    http://blog.csdn.net/zoutongyuan/article/details/41379851/ 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.Angula ...

  9. 基于Spring + Spring MVC + Mybatis 高性能web构建

    基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...

随机推荐

  1. ubuntu samba 服务器设置

    安装 SAMBA 组件 sudo apt-get install samba smbfs smbclient ubuntu 14.04 使用以下方式安装: ? 1 2 3 4 5 6 7 若之前有安装 ...

  2. 一个文件夹可以link 到另外一个文件夹

    Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D      Creates a directory symboli ...

  3. Mac、Linux更换命令行svn diff为P4Merge、vimdiff

    2015-01-21 21:25:52 这里先把那个程序员大神的博客地址贴一下(PS:大神,我不是为了抄袭哦,真是怕自己忘记了),http://www.ccvita.com/445.html,里面还有 ...

  4. awk(1)-简述

    1.概述 AWK is a programming language designed for text processing and typically used as a data extract ...

  5. JavaScript 获取数组中最大值、最小值

    笨方法 Array.prototype.max = function() { var max = this[0]; var len = this.length; for (var i = 1; i & ...

  6. Spring Boot 框架@Temporal(TemporalType.DATE)

    使用spring boot框架开发项目时,遇到这样一个问题: 查询pgSQL数据库中表A中某date数据类型的列B,想得到YYYY-MM-DD格式的日期,结果返回的为时间戳(长整型数据). 解决办法: ...

  7. HTML5视频Video 音频Audio

    视频协议 视频格式 Flash HTML5 HTTP flv HTTP f4v HTTP mp4 HTTP m3u8 HTTP webm HTTP ogg RTMP flv RTMP f4v RTMP ...

  8. 启动OracleDBConsoleorcl失败,提示错误代码2

    异常问题: 启动OracleDBConsoleorcl失败,提示错误代码2 原因分析: 由于更改计算机名导致的异常 解决方法: 1.管理员权限cmd下执行emctl start dbconsole 2 ...

  9. leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  10. 兼容ie7、8、9、10、FF、Chrome的遮罩显示

    经常碰到这种情形,要实现图片上有一层遮罩和按钮,鼠标滑过时遮罩颜色变深且按钮图片变化,磕磕碰碰终于弄出来题目所述兼容的解决方案. 对于遮罩的实现,将遮罩层.按钮.图片放置在同一个div中,根据abso ...