使用MockMVC与Junit进行单体测试

1、pom.xml追加

junit

spring-test

 

2、测试共通类

@ContextConfiguration(locations = { "classpath:springframework/application-context.xml",
        "classpath:springframework/dispatcherservlet-servlet.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Transactional
abstract public class TestCommon {

    private static final Logger LOG = LogManager.getLogger();

    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext wac;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

}

 

3、示例

public class MemberTest extends TestCommon {

    /**
     * 请求:新增,请求方式:POST
     */
    @Test
    @Rollback(false)
    public void add() throws Exception {
        String uri = "/member/add";
        Map<String, String> contentParams = new HashMap<>();
        contentParams.put("name", "测试用姓名");
        contentParams.put("sex", "男");
        String jsonStr = new ObjectMapper().writeValueAsString(contentParams);
        MockHttpServletResponse response = mockMvc.perform(
                MockMvcRequestBuilders.post(uri).contentType(MediaType.APPLICATION_JSON_UTF8).content(jsonStr))
                .andReturn().getResponse();
        if (response.getStatus() != HttpServletResponse.SC_OK) {
            fail("Http" + response.getStatus());
        }
            LOG.info(response.getContentAsString());
    }

}

 

4、如果想测试除post以外的请求,可以调用MockMvcRequestBuilders的get, put等方法

 

5、类似于URL中的“?page=2”的参数,可以调用MockMvcRequestBuilders的params方法

 

posted @ 2017-09-17 20:01  Deolin  阅读(1043)  评论(0编辑  收藏  举报