Я пишу покрытие кода Junit для приведенного ниже кода Java, а код не распространяется на Otherthan Runtime Exception
.
Пожалуйста, найдите мой код ниже Java.
public class NotifySupervisorJobTask implements Tasklet {
private static final Logger LOGGER = LoggerFactory.getLogger(NotifySupervisorJobTask.class);
@Autowired
private CoreClient client;
@Autowired
private ItemProcessFailedNotifier itemProcessFailedNotifier;
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
try {
client.notifySupervisor(null);
LOGGER.info("notifySupervisorJobTask - execute() called");
} catch (RuntimeException exception) {
String errorMessage = format("Error in triggering notify supervisor job. Task will be repeated at next scheduled time. Error is: [%s]", exception.getMessage());
LOGGER.error(errorMessage, exception);
contribution.setExitStatus(FAILED);
itemProcessFailedNotifier.notifyByEmailOnException(chunkContext.getStepContext(), new Exception(errorMessage,
exception));
}
return RepeatStatus.FINISHED;
}
}
Пожалуйста, найдите мой testcase
код для other than runtime exception
кейса.
@ InjectMocks private NotifySupervisorJobTask notifySupervisorJobTask;
@Mock
private ItemProcessFailedNotifier itemProcessFailedNotifier;
@Mock
private CoreClient client;
private ChunkContext chunkContext;
private StepContext stepContext;
@Before
public void setUp() {
chunkContext = mock(ChunkContext.class);
stepContext = mock(StepContext.class);
when(chunkContext.getStepContext()).thenReturn(stepContext);
}
@Test(expected = Exception.class)
public void shouldThrowExceptionOtherThanRuntimeException() throws Exception {
Exception ex = mock(Exception.class);
doThrow(ex).when(client).notifySupervisor(null); // Line not covered
notifySupervisorJobTask.execute(null, chunkContext); // Line not covered
verify(itemProcessFailedNotifier).notifyByEmailOnException(stepContext, ex); // Line not covered
}