factory.setCommitInterval(5);
factory.setSkipLimit(3);
factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));
Step step = factory.getObject();
step.execute(stepExecution);
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
assertEquals("bad skip count", 3, stepExecution.getSkipCount());
assertEquals("bad read skip count", 2, stepExecution.getReadSkipCount());
assertEquals("bad write skip count", 1, stepExecution.getWriteSkipCount());
// writer did not skip "6" as it never made it to writer, only "4" did
assertFalse(reader.getRead().contains("6"));
assertTrue(reader.getRead().contains("4"));
// only "1" was ever committed
List<String> expectedOutput = Arrays.asList(StringUtils.commaDelimitedListToStringArray("1,2,3,5,7,8,9,10,11"));
assertEquals(expectedOutput, writer.getCommitted());
assertStepExecutionsAreEqual(stepExecution, repository.getLastStepExecution(jobExecution.getJobInstance(), step
.getName()));
}