Meine Klasse enthält folgende HandleException-Methode, für die ich JUnit mit voller Codeabdeckung schreiben muss. Als ich JUnit bin hier kann nach Ihren Quellcode müssen in den Tests eine Instanz der umgebenden Klasse, die Sie jemandWie schreibe ich Junit für Ausnahme
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");
}
@ Test \t public final void testhandleException() löst Exception aus {given (smartGraphServiceHelper.generateDocument (Mockito.any (DCMRequestDTO.class))). WillThrow (new SocketTimeoutException()); \t \t \t \t Zeichenfolge callType = ""; \t \t \t \t smartGraphService.handleException (Ausnahme, requestDTO, responseDTO, callType); \t \t assertEquals ("0", responseDTO.getErrorCode()); \t} Dies ist, was ich versucht habe, gibt aber nullpointer, wenn es innerhalb der exception.getCause() geht – Amit