zoukankan      html  css  js  c++  java
  • Junit测试

      在Junit4中,一个POJO类就是一个测试类,测试方法通过@Test标识,初始化方法通过@Before,释放资源通过@After来标注。习惯上把初始化方法命名为setUp。释放资源的方法命名为testDown,测试方法用test开头,目的是为了Junit3也可以测试。

      Spring MVC测试框架提供了对服务器端和客户端的支持。对于客户端,不需要启动服务器即可测试我们的Restful服务。

      独立测试方式:

    public class UserControllerStandaloneSetupTest {  
        private MockMvc mockMvc;  
        @Before  
        public void setUp() {  
            UserController userController = new UserController();  
            mockMvc = MockMvcBuilders.standaloneSetup(userController).build();  
        }  
    }  
    

      首先自己创建相应的控制器,注入相应的依赖。

      通过MockMvcBuilder.standaloneSetup模拟一个Mvc测试环境。通过build得到一个MockMvc,MockMvc是我们以后测试经常使用的API。

    //XML风格  
    @RunWith(SpringJUnit4ClassRunner.class)  
    @WebAppConfiguration(value = "src/main/webapp")  
    @ContextHierarchy({  
            @ContextConfiguration(name = "parent", locations = "classpath:spring-config.xml"),  
            @ContextConfiguration(name = "child", locations = "classpath:spring-mvc.xml")  
    })  
    //注解风格  
    //@RunWith(SpringJUnit4ClassRunner.class)  
    //@WebAppConfiguration(value = "src/main/webapp")  
    //@ContextHierarchy({  
    //        @ContextConfiguration(name = "parent", classes = AppConfig.class),  
    //        @ContextConfiguration(name = "child", classes = MvcConfig.class)  
    //})  
    public class UserControllerWebAppContextSetupTest {  
        @Autowired  
        private WebApplicationContext wac;  
        private MockMvc mockMvc;  
        @Before  
        public void setUp() {  
            mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();  
        }  
    }  
    

      @WebAppConfiguration:测试环境时使用。用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的,value指定web应用的根

      @ContextHierarchy:指定容器层次,即spring-config.xml是父容器,而spring-mvc.xml是子容器 3、通过@Autowired WebApplicationContext wac:注入web环境的ApplicationContext容器; 4、然后通过MockMvcBuilders.webAppContextSetup(wac).build()创建一个MockMvc进行测试;

    @Test  
    public void testView() throws Exception {  
        MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/user/1"))  
                .andExpect(MockMvcResultMatchers.view().name("user/view"))  
                .andExpect(MockMvcResultMatchers.model().attributeExists("user"))  
                .andDo(MockMvcResultHandlers.print())  
                .andReturn();  
          
        Assert.assertNotNull(result.getModelAndView().getModel().get("user"));  
    }  
    

      

    1、mockMvc.perform执行一个请求;

    2、MockMvcRequestBuilders.get("/user/1")构造一个请求

    3、ResultActions.andExpect添加执行完成后的断言

    4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。

    5、ResultActions.andReturn表示执行完成后返回相应的结果。

    整个测试都很有规律:

    1、准备测试环境

    2、通过MockMvc执行请求

    3.1、添加验证断言

    3.2、添加结果处理器

    3.3、得到MvcResult进行自定义断言/进行下一步的异步请求

    4、卸载测试环境

  • 相关阅读:
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    财务报表分析(张新民教授)-第七章 企业财务质量分析
    PS
    史上最强视频网站真实地址解析
    jsonp详解
    width:100%缩小窗口时背景图片出现空白bug
  • 原文地址:https://www.cnblogs.com/yaohuiqin/p/9364348.html
Copyright © 2011-2022 走看看