spring mvc 单元测试示例

Posted zipon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());  
    }  
  
}  

 

以上是关于spring mvc 单元测试示例的主要内容,如果未能解决你的问题,请参考以下文章

spring mvc+spring + hibernate 整合

spring mvc中的单元测试

Spring MVC 单元测试Demo

使用 Spring-Test-MVC 单元测试 Spring-Security - 集成 FilterChain / ServletFilter

高手如何给 Spring MVC 做单元测试?

高手都这么给 Spring MVC 做单元测试!