在JUnit测试用例中使用Try Catch

时间:2018-08-22 13:03:24

标签: java junit4 mockmvc

最初,我在Java Spring Boot Junit测试用例中使用 MockMvc 。 如果消息不是成功消息,则我将发送消息为Success {“ message”:“ Success”} 的JSON,而不会引发AssertionError Exception。它应该检查catch块下面的消息Failure语句。

没有添加catch语句,是否有任何可行的方法可以将Success,Failure场景组合在一起。以下代码说明了我尝试过的方法,

@Test
public void test() throws Exception {
    try {
        result = mockMvc.perform(post("/test/{testId}", "44")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"order\": \"desc\"}")
                .accept(MediaType.APPLICATION_JSON)).andExpect(status().is(200))
                .andExpect(jsonPath("message").value("Success"))
                .andReturn();
    } catch (AssertionError e) {

        result = mockMvc.perform(post("/test/{testId}", "44")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"order\": \"desc\"}")
                .accept(MediaType.APPLICATION_JSON)).andExpect(status().is(200))
                .andExpect(jsonPath("message").value("Failure"))
                .andReturn();

    }

}

1 个答案:

答案 0 :(得分:1)

尝试一下

 result = mockMvc.perform(post("/test/{testId}", "44")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"order\": \"desc\"}")
                .accept(MediaType.APPLICATION_JSON)).andExpect(status().is(200))
                .andExpect(jsonPath("message").value(org.hamcrest.CoreMatchers.anyOf(is("Failure"), is("Success"))))
                .andReturn();

但是我建议您像Martin一样尝试将这些测试用例拆分为单独的测试。