java - 如何对自定义异常执行 JUnit 测试
问题描述
我有一个自定义异常来处理我的程序的预期错误,这里是代码。
@ControllerAdvice
@RestController
public class DashboardException {
@ExceptionHandler({Exception.class, IOException.class, ParseException.class, JsonProcessingException.class})
public final ResponseEntity<ErrorDetails> dataNotFoundException(Exception ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails();
errorDetails.setTimestamp(new Date().toString());
errorDetails.setMessage(ex.getMessage());
errorDetails.setPath(request.getDescription(false));
errorDetails.setStatus(HttpStatus.BAD_REQUEST.value());
errorDetails.setError(HttpStatus.BAD_REQUEST);
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
}
我的问题是如何正确地对这个类进行单元测试。这是我到目前为止所做的,但没有运气。
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = { DashboardException.class, TestConfiguration.class, DataController.class })
public class testDashboardException {
private MockMvc mockMvc;
@Autowired
WebApplicationContext wac;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Configuration
@EnableWebMvc
public static class TestConfiguration { }
@Controller
@RequestMapping("/tests")
public static class RestProcessingExceptionThrowingController {
@GetMapping(value = "/exception")
public @ResponseBody String find() throws Exception {
throw new Exception("global_error_test");
}
}
@Test
public void testHandleException() throws Exception {
mockMvc.perform(get("/tests/exception"))
.andExpect(new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
result.getResponse().getContentAsString().contains("global_error_test");
}
})
.andExpect(status().isBadRequest());
}
/*
* @Test public void testErrorDetailsValue() {
*
* thrown.expect(Exception.class); thrown.expect(IOException.class);
* thrown.expect(ParseException.class);
* thrown.expect(JsonProcessingException.class);
*
* thrown.expectMessage("Bad Request");
*
* }
*/
}
我对自定义异常只有一点了解。我在这里想念什么?感谢您的任何帮助。
解决方案
我发现了如何覆盖我的自定义异常。我刚刚在我的控制器上包含了一个测试,该测试将使端点失败,它确实捕获了一个异常并覆盖了我的自定义异常。
推荐阅读
- android - 应用程序在后台时不调用 FCM 的 onMesasageReceived?
- sql-server - SQL 存储过程的 select 语句中标量函数的备用选项
- reactjs - 如何在 reactjs 的其他应用程序中创建可重用组件?
- dart - Flutter中如何存储大数据?
- javascript - 如何在javascript的循环中调用与ajax相关的函数?
- javascript - 如何做这个语句的计算
- javascript - 为什么从 JS 代码调用 innerHTML 不起作用?
- xamarin - iOS HttpClient 崩溃
- python - 是否有任何简单的方法可以在列表中的列表中添加元素以使列表中的所有列表具有相同数量的元素?
- java - 如何在我的 android 片段中使用 echo php