전자정부 표준프레임워크에서는 생성된 배치 파일들을 활용하여 간단한 테스트를 할 수 있는 테스트 마법사를 제공한다.
배치 테스트시 필요한 항목들을 골라 테스트 파일을 생성해주고 JUnit을 통한 테스트를 진행한다.
✔ 배치 테스트 마법사를 통해 생성된 테스트 파일은 별도로 JUnit Test를 진행할 경우에도 사용가능하다.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/newJobLauncher.xml", "/newJob.xml", "/egovframework/batch/context-batch-job-launcher.xml", "/egovframework/batch/context-batch-datasource.xml" }) public class testFile{ @Autowired @Qualifier("newJobLauncher.egovBatchRunner") private EgovBatchRunner egovBatchRunner; @Test public void testJobRun() throws Exception { String jobName = "TestJob"; JobParametersBuilder jobParametersBuilder = new JobParametersBuilder(); jobParametersBuilder.addLong("timestamp", new Date().getTime()); jobParametersBuilder.addString("name", "eGovframe"); String jobParameters = egovBatchRunner.convertJobParametersToString(jobParametersBuilder.toJobParameters()); long executionId = egovBatchRunner.start(jobName, jobParameters); // Launcher 파일 내 Aysnc 설정이 존재 할 경우 Thread.sleep(10000) // if(egovBatchRunner.getJobExecution(executionId).getExitStatus().toString().contains("UNKNOWN")){ // Thread.sleep(10000); // } assertEquals(BatchStatus.COMPLETED, egovBatchRunner.getJobExecution(executionId).getStatus()); } }
구분 | 항목 | 설명 | 입력값 |
---|---|---|---|
동기/비동기 | @RunWith | Spring의 JUnit을 통한 테스트를 위한 등록 | SpringJUnit4ClassRunner.class |
동기/비동기 | @ContextConfiguration | 배치 테스트를 위해 Job, JobLauncher 등의 구성 항목 위치 등록 | {“JobLauncher 위치”, “Job 위치”, ”(JobRepository 위치)”, ”(Datasource 위치)”} |
동기/비동기 | @Qualifier | 구성한 Job, JobLauncher 등의 항목을 묶어줌 | 선택한 JobLauncher 에 등록되어 있는 EgovBatchRunner클래서 등록 bean id |
비동기 | Thread.sleep(10000); | 선택한 Job 항목 내에 비동기 설정이 있는 경우 정상 동작을 위한 등록 | 10000 |
✔ Thread.sleep(10000) : 일반적으로 Java Application으로 구동되기 때문에 Job이 수행된 직후 바로 종료된다. 따라서 안정적인 비동기식 Job을 성공시키기 위해 Thread.sleep을 추가시켰다.10000이라는 시간은 Job이 수행되는 기본적인 시간을 감안해서 설정해 놓았고 그 이상의 시간이 소요되는 Job을 테스트 할 경우 시간을 늘려줄 필요가 있다.