zoukankan      html  css  js  c++  java
  • spring mvc 单元测试示例

    import java.awt.print.Printable;  
    import java.io.IOException;  
      
    import javax.servlet.http.HttpServletResponse;  
      
    import org.junit.Before;  
    import org.junit.Test;  
    import org.junit.runner.RunWith;  
    import org.springframework.beans.factory.annotation.Autowired;  
    import org.springframework.http.MediaType;  
    import org.springframework.test.context.ContextConfiguration;  
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
    import org.springframework.test.context.web.WebAppConfiguration;  
    import org.springframework.test.web.servlet.MockMvc;  
    import org.springframework.test.web.servlet.ResultHandler;  
    import org.springframework.test.web.servlet.ResultMatcher;  
    import org.springframework.ui.Model;  
    import org.springframework.test.context.transaction.TransactionConfiguration;  
    import org.springframework.transaction.annotation.Transactional;  
    import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;  
    import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;  
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;  
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;  
    import org.springframework.web.bind.annotation.RequestMapping;  
    import org.springframework.web.bind.annotation.RequestMethod;  
    import org.springframework.web.context.WebApplicationContext;  
      
    @RunWith(SpringJUnit4ClassRunner.class)  
    @WebAppConfiguration  
    @ContextConfiguration(locations = { "classpath:applicationContext.xml" })  
    //当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否  
    @TransactionConfiguration(defaultRollback = true)  
    //记得要在XML文件中声明事务哦~~~我是采用注解的方式  
    @Transactional  
    public class ExampleTests {  
      
        @Autowired  
        private WebApplicationContext wac;  
      
        private MockMvc mockMvc;  
      
        @Before  
        public void setup() {  
            // webAppContextSetup 注意上面的static import  
            // webAppContextSetup 构造的WEB容器可以添加fileter 但是不能添加listenCLASS  
            // WebApplicationContext context =  
            // ContextLoader.getCurrentWebApplicationContext();  
            // 如果控制器包含如上方法 则会报空指针  
            this.mockMvc = webAppContextSetup(this.wac).build();  
        }  
      
        @Test  
            //有些单元测试你不希望回滚  
            @Rollback(false)  
        public void ownerId() throws Exception {  
            mockMvc.perform((get("/spring/rest/4.do"))).andExpect(status().isOk())  
                    .andDo(print());  
        }  
      
        @Test  
        public void test() throws Exception {  
            mockMvc.perform((get("/spring/test.do"))).andExpect(status().isOk())  
                    .andDo(print())  
                    .andExpect(model().attributeHasNoErrors("teacher"));  
        }  
      
        @Test  
        public void testb() throws Exception {  
            mockMvc.perform((get("/spring/testb.do"))).andExpect(status().isOk())  
                    .andDo(print());  
        }  
      
        @Test  
        public void getAccount() throws Exception {  
            mockMvc.perform((post("/spring/post.do").param("abc", "def")))  
                    .andExpect(status().isOk()).andDo(print());  
        }  
      
    }  
  • 相关阅读:
    U3D中的一些方法和属性
    Animation
    官哥雷达模组样品,特列出技术指标,欢迎高手捧场
    BGA256芯片植球全过程体验(原创)
    最高分辨率行间转移CCD图像传感器
    PYTHON5000:CMOS图象传感器演示
    四张图表让你搞懂电离辐射及常用的量
    TVP5150 PAL/NTSC ccd cmos 模拟摄像头视频 转换 VGA输出
    CyAPI环境搭建
    usb fx2 cy68013 Cyapi使用心得
  • 原文地址:https://www.cnblogs.com/zipon/p/5626348.html
Copyright © 2011-2022 走看看