SpringMVC是用junit测试

架包支持:junit.jar;org.springframework.test-3.1.0.RELEASE.jar

测试Dao基础类:JUnitDaoBase

Java代码  

  1. package test.test;
  2. import javax.annotation.Resource;
  3. import javax.sql.DataSource;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.test.context.ContextConfiguration;
  6. import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. /**
  9. * <b>Summary: </b> TODO Junit 基础类,加载环境
  10. * <b>Remarks: </b> TODO DAO测试基础类
  11. */
  12. @RunWith(SpringJUnit4ClassRunner.class)
  13. @ContextConfiguration(locations = {"classpath:/config/applicationContext.xml"})
  14. public  class JUnitDaoBase extends AbstractTransactionalJUnit4SpringContextTests {
  15. /**
  16. * <b>Summary: </b> 复写方法 setDataSource
  17. *
  18. * @param dataSource
  19. * @see org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests#setDataSource(javax.sql.DataSource)
  20. */
  21. @Override
  22. @Resource(name = "myDataSource")
  23. public void setDataSource(DataSource dataSource) {
  24. // TODO Auto-generated method stub
  25. super.setDataSource(dataSource);
  26. }
  27. }

具体dao 测试继承daoBaseTest就可以了

Java代码  

  1. package test.java.dao;
  2. import java.util.List;
  3. import org.junit.Test;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import com.pinfang.dao.UserDao;
  6. import com.pinfang.vo.User;
  7. import test.test.JUnitDaoBase;
  8. /**
  9. * dao层测试例子
  10. * @author fule
  11. *
  12. */
  13. public class UserDaoTest extends JUnitDaoBase {
  14. @Autowired
  15. private UserDao userDao;
  16. @Test
  17. public void testUserDao() {
  18. User user = new User();
  19. user.setPassword("123456");
  20. user.setName("大妈");
  21. user.setSex(1);
  22. //System.out.println(userDao.findOnValidate(user).getMark());
  23. List<User> list = userDao.getAll();
  24. System.out.println(list);
  25. //System.out.println(userDao.findOneByName("张三s"));
  26. //System.out.println(userDao.addUser(user));
  27. }
  28. }

action层测试基础类:JUnitActionBase

Java代码  

  1. package test.test;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.junit.BeforeClass;
  5. import org.springframework.mock.web.MockServletContext;
  6. import org.springframework.web.context.WebApplicationContext;
  7. import org.springframework.web.context.support.XmlWebApplicationContext;
  8. import org.springframework.web.servlet.HandlerAdapter;
  9. import org.springframework.web.servlet.HandlerExecutionChain;
  10. import org.springframework.web.servlet.HandlerMapping;
  11. import org.springframework.web.servlet.ModelAndView;
  12. import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;
  13. import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
  14. /**
  15. * JUnit测试action时使用的基类
  16. *
  17. * @author fule
  18. *
  19. */
  20. public class JUnitActionBase {
  21. private static HandlerMapping handlerMapping;
  22. private static HandlerAdapter handlerAdapter;
  23. /**
  24. * 读取配置文件
  25. */
  26. @BeforeClass
  27. public static void setUp() {
  28. if (handlerMapping == null) {
  29. String[] configs = {
  30. "file:src/config/applicationContext.xml" };
  31. XmlWebApplicationContext context = new XmlWebApplicationContext();
  32. context.setConfigLocations(configs);
  33. MockServletContext msc = new MockServletContext();
  34. context.setServletContext(msc);
  35. context.refresh();
  36. msc.setAttribute(
  37. WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
  38. context);// TODO
  39. handlerMapping = (HandlerMapping) context
  40. .getBean(DefaultAnnotationHandlerMapping.class);
  41. handlerAdapter = (HandlerAdapter) context
  42. .getBean(context
  43. .getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);
  44. // handlerAdapter = (HandlerAdapter) context.getBean(context
  45. // .getNamespace());
  46. }
  47. }
  48. /**
  49. * 执行request请求的action
  50. *
  51. * @param request
  52. * @param response
  53. * @return
  54. * @throws Exception
  55. */
  56. public ModelAndView excuteAction(HttpServletRequest request,
  57. HttpServletResponse response) throws Exception {
  58. // 这里需要声明request的实际类型,否则会报错
  59. request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);
  60. HandlerExecutionChain chain = handlerMapping.getHandler(request);
  61. ModelAndView model = null;
  62. try {
  63. model = handlerAdapter
  64. .handle(request, response, chain.getHandler());
  65. } catch (Exception e) {
  66. e.printStackTrace();
  67. }
  68. return model;
  69. }
  70. }

测试action类继承它就可以了

Java代码  

  1. package test.java.action;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.mock.web.MockHttpServletRequest;
  6. import org.springframework.mock.web.MockHttpServletResponse;
  7. import org.springframework.web.servlet.ModelAndView;
  8. import com.pinfang.logic.service.UserService;
  9. import test.test.JUnitActionBase;
  10. /**
  11. * action测试列子
  12. * @author fule
  13. *
  14. */
  15. public class UserActionTest extends JUnitActionBase {
  16. @Autowired UserService service;
  17. @Test
  18. public void testUserShow() throws Exception{
  19. MockHttpServletRequest request = new MockHttpServletRequest();
  20. MockHttpServletResponse response = new MockHttpServletResponse();
  21. request.setServletPath("/userManager/user.show");
  22. request.addParameter("name", "张三");
  23. request.addParameter("password", "123456");
  24. request.setMethod("post");
  25. request.setAttribute("msg", "测试action成功");
  26. final ModelAndView mav = this.excuteAction(request, response);
  27. Assert.assertEquals("userManager/userlist", mav.getViewName());
  28. String msg=(String)request.getAttribute("msg");
  29. System.out.println(msg);
  30. }
  31. }

配置文件记得声明两个bean:

Xml代码  

  1. <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
  2. <bean  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

Spring读取WEB-INF下配置文件的方法:

配置文件放在class目录下:

Java代码  

  1. view plaincopyprint?
  2. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springMVCForm-servlet.xml");

WEB-INF下:

Java代码  

  1. [java] view plaincopyprint?
  2. ApplicationContext applicationContext = new FileSystemXmlApplicationContext("WebContent/WEB-INF/springMVCForm-servlet.xml");

多个文件可用*表示:

Java代码  

  1. [java] view plaincopyprint?
  2. ApplicationContext applicationContext = new FileSystemXmlApplicationContext("WebContent/WEB-INF/springMVCForm-*.xml");

注解方式:

配置文件放在class目录下:

Java代码  

  1. [java] view plaincopyprint?
  2. @ContextConfiguration(locations={"classpath:springMVCForm-servlet.xml"})

WEB-INF下:

Java代码  

  1. view plaincopyprint?
  2. @ContextConfiguration(locations={"file:WebContent/WEB-INF/springMVCForm-servlet.xml"})

参考:

http://blog.csdn.net/yeohcooller/article/details/7631202

http://a52071453.iteye.com/blog/1559000

http://www.iteye.com/topic/828513

时间: 2024-09-29 06:55:33

SpringMVC是用junit测试的相关文章

利用junit对springMVC的Controller进行测试

本文转自http://www.tuicool.com/articles/7rMziy 平时对junit测试service/DAO层已经很熟悉不过了,如果不了解,可以猛戳这里,但是我们要测试controller层,不能总重启服务器吧,(重启tomcat好慢的飘过,别...别走啊),那么我们就用junit4模拟请求,测试controller层的方法. 代码1:直接Controller调用方法 import static org.junit.Assert.*; import java.sql.SQLE

搭建项目Maven+springMVC+hibernate时,JUnit测试出现报ClassNotFoundException错误的解决

最近在搭建Maven+springMVC+hibernate项目,正常启动项目时一切正常,但JUNIT测试时出现报ClassNotFoundException错误,经过仔细排查发现没有生成class文件. 现在解决如下:

springmvc controller junit 测试

目录 1 建立UserController类 2 建立测试类 3 JUnit测试 4 几个jar包 第一次搭建SSM框架,整合SpringMVC完成后进行Controller测试,找资料并解决问题. 下图是我的完整目录: 回到顶部 1 建立UserController类 代码清单 1-1:UserController.java package org.sei.controller; import javax.annotation.Resource; import javax.servlet.ht

Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法

一.单元测试的目的 简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期修改后(不论是增加新功能,修改bug),都可以做到重新测试的工作.以减少我们在发布的时候出现更过甚至是出现之前解决了的问题再次重现. 这里主要是使用MockMvc对我们的系统的Controller进行单元测试. 对数据库的操作使用事务实现回滚,及对数据库的增删改方法结束后将会还远数据库. 二.MockMvc的使用 1.首先我们上一个例子, import org.apache.commons.log

002杰信-陌生的maven-web项目整改成我们熟悉的Web架构;classpath的含义;ssm框架的整合;junit测试

这篇博客的资源来源于创智播客,先在此申明.这篇博客的出发点是jk项目,传智的做法是Maven的web模板生成的,但是这样子的结构目录与我们熟知的Web项目的结构目录相差很大,所以要按照我们熟知的项目结构来.这篇文章涉及到的最重要的是:1.加载各种配置文件时经常涉及到classpath,这个东西,要搞搞清楚,在web项目代表的是什么( WEB-INF文件夹下的classes目录).2.还有就是做一个项目时,建包的目录,3.用junit去测试框架的整合. 传智的做法是Maven的web模板生成的:

android junit 测试 简要步骤

android junit 测试 1.新建一个类继承TestCase这个类 2.AndroidManifest.xml, 加入<uses-library android:name="android.test.runner" /> <!-- 记住这个一要放在application外面,不然会出现配置错误 信息 -->      <instrumentation android:name="android.test.InstrumentationTe

Junit测试中的setup和teardown 和 @before 和 @After 方法

这几天做Junit测试接触到了setup和teardown两个方法,简单的可以这样理解它们,setup主要实现测试前的初始化工作,而teardown则主要实现测试完成后的垃圾回收等工作. 需要注意的是Junit3中每个测试方法执行时都会执行它们,而不是一个类中执行一次,查了查资料,JUnit4版本采用注解的方式可以实现一个类只执行一次,下面看看测试代码: jar下载地址: http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22junit%22%20

复利计算器(软件工程)及Junit测试———郭志豪

计算:1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30 客户提出: 2.如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? 4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 5.如果我希望在十年内将100万元变

正则表达式 和 junit测试

需要知道一些常规的正则表达式语句,然后可以仿照规则写出一下正则表达式语句.然后是关于junit测试. 知道了一个之前看过的文档,然后有功夫就看一下那个文档就可以,或者后面找时间搜索一下. 正则表达式是一个字符串: 由^开头 由$结尾. []表示可取值的范围. \\d表示数字. 下面两个表达式等效: ^[0-9]*$ ^\\d*$ 都表示若干数字 下面这个表示多个汉字: ^[\u4e00-\u9fa5]{0,}$ 汉字的码集是从\u4e00-\u9fa5 所有英文字母和数字: ^[a-zA-Z0-