【发布时间】:2021-01-26 00:11:07
【问题描述】:
这可能是一个重复的问题。但是我浏览了一些 10-15 个相关的帖子和相关的回复,这些都没有解决我的问题。我面临的问题如下 我有一个带有自定义 ApplicationException 的 SpringRest 控制器类。 我已经为我的控制器编写了一个 Junit,下面是我遇到问题的 sn-p。
this.mockMvc.perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON)
.content(new ObjctMapper().writeValueAsString(requestObject)
.headers(header)
.accept(MediaType.APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().is4xxClientError());
当我执行测试方法时,我看到代码中抛出了 ApplicationException,但是 Junit 失败了,我在 Junit Console 中看到的是
"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.abc.pmr.case.exception.ApplicationException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
...
...
Caused by: com.abc.pmr.case.exception.ApplicationException
at com.abc.pmr.case.exception.ApplicationException
我也试过.andExpect(mvcresult -> assertTrue(mvcresult.getResolvedException() instanceof ApplicationException));。
但这也无济于事。
Junit 因上述异常而失败,而我想将具有预期异常的 Junit 作为 ApplicationException 传递。 注意:该类所有成功场景测试用例均通过成功。
我们将不胜感激。
【问题讨论】:
-
你的异常有处理逻辑吗?你试过
getResolvedException,但它只会从docsReturn any exception raised by a handler and successfully resolved through a HandlerExceptionResolver. -
是的,我确实有一个异常处理程序,它进一步调用一个转换器类,该类构建完整的错误响应以及错误代码、错误消息等。
-
您能在此处添加您的异常处理程序列表吗?
-
您确定,您的控制器抛出的异常在 400 范围内吗?可以请添加它抛出异常的Api的响应吗?
-
@evg_ny 将很快分享处理程序代码。
标签: java spring-boot spring-mvc junit5