我的類包含以下handleException方法,我必須使用完整的代碼覆蓋率編寫JUnit。由於我是新來的JUnit任何人可以幫助如何爲例外編寫Junit
public void handleException(Exception exception, DCMRequestDTO requestDTO, DCMResponseDTO responseDTO, String callType) {
logger.error("Exception occured for deviceId:" + requestDTO.getDeviceID() + ",RefNum:"+
requestDTO.getRefNum() + ",Operation:" + requestDTO.getOperation() + "::" + exception.getMessage());
exception.printStackTrace();
String errorMessageKey = "GENERIC_EXCEPTION";
if (exception instanceof TooManyInflightException) {
errorMessageKey = "THROTTLE_EXCEPTION";
} else if (exception.getCause() instanceof SocketTimeoutException ||
(exception.getCause() != null && exception.getCause().getCause() instanceof SocketTimeoutException)) {
errorMessageKey = "TIMEOUT_EXCEPTION";
} else if (exception.getCause().getCause() instanceof ConnectException || exception.getCause().getCause() instanceof ConnectTimeoutException || exception.getCause().getCause() instanceof UnknownHostException || exception.getCause().getCause() instanceof MalformedURLException || exception.getCause().getCause() instanceof SocketException || (exception.getMessage().indexOf("404 Error") != -1)) {
errorMessageKey = "CONNECTION_EXCEPTION";
} else if(exception.getMessage().indexOf("500")!=-1){
errorMessageKey = "INTERNAL_ERROR";
}
/*
* else if (exception instanceof DCMException) { if (exception.getCause().getCause() instanceof SocketTimeoutException) { errorMessageKey = "TIMEOUT_EXCEPTION"; } else if (exception.getCause().getCause() instanceof ConnectException || exception.getCause().getCause() instanceof IOException || exception.getCause().getCause() instanceof SocketException || (exception.getMessage().indexOf("404 Error") != -1)) { errorMessageKey = "CONNECTION_EXCEPTION"; } }
*/
// logger.error(errorMessageKey + " occured in DCMServiceImpl :: UniqueId = " + requestDTO.getUniqueId() + ", RefNum = " + requestDTO.getRefNum() + ", Operation = " + requestDTO.getOperation() + ", callType = " + callType, exception);
// added for reset time while exception occured
responseDTO.setErrorCode(0);
responseDTO.setErrorString(smartGraphUtils.getProperty(errorMessageKey));
responseDTO.setStackTrace(exception.toString());
responseDTO.setHasJson(false);
requestDTO.setHidResolveGetRetrains("Undetermined");
}
@測試 \t public final void testhandleException()throws Exception {given(smartGraphServiceHelper.generateDocument(Mockito.any(DCMRequestDTO.class)))。willThrow(new SocketTimeoutException()); \t \t \t \t String callType =「」; \t \t \t \t smartGraphService.handleException(exception,requestDTO,responseDTO,callType); \t \t assertEquals(「0」,responseDTO.getErrorCode()); \t}這是我嘗試過的,但當它進入exception.getCause() – Amit