JobLauncherTestUtils를 이용한 Spring Batch Test
Spring Batch Test - JobLauncherTestUtils 이번에 스프링 배치 테스트 코드를 작성하던 도중에 고민하던 부분과 해결해보려 알아본 내용을 정리해봤습니다 스프링 배치 Step Flow 테스트 Batch 작업을 진행하다 보면 어느 한 Step에서 특정 조건에 부합하는 경우 Job을 종료해야하는 상황이 있을 수 있습니다. 그런 상황의 예제로 아래와 같은 Job의 마지막 실행일자가 오늘과 같으면 Job을 종료 시키는 소스가 있습니다. checkAlreadyRunJob() 을 보면 Job을 멈추기 위해서 Step의 ExitStauts를 임의로 셋업하여 Job을 멈추는 부분이 있습니다. Configuring for Stop 방법은 아래 링크를 참고했습니다. (xml, java config) https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#configuringForStop 문제는 if (LocalDate.now().isEqual(lastRunDate)) 의 경우에 테스트 코드를 어떻게 작성하는 것이 좋을까 고민이 되었습니다. 즉, 특정 상황에서의 Step의 흐름을 어떻게 하면 테스트할 수 있을까 알아보았습니다. Step Exit Status가 STOPPED로 세팅되었는지 Step Exit Status(STOPPED)에 따라 Job이 정상 종료하였는지 ... @Bean("userPrintJob") public Job generateMyJob() { return jobBuilderFactory.get("userPrintJob") .start(generateMyTasklet()) .on("STOPPED").end() .on("COMPLETED").to(...