• 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

  • 相关阅读:
    css gridlayout
    css position 属性
    简单的登陆界面
    introduce
    Event flow
    constructor和object的区别
    10th week (1)
    编程语言的历史和发展
    正则表达式的验证匹配
    js正则替换
  • 原文地址:https://www.cnblogs.com/Struggles/p/4118344.html
Copyright © 2020-2023  润新知