最初,我在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();
}
}
答案 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一样尝试将这些测试用例拆分为单独的测试。