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



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

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



    action层测试基础类:JUnitActionBase

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



    测试action类继承它就可以了

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



    配置文件记得声明两个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

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/Struggles/p/4118344.html
Copyright © 2011-2022 走看看