이번에는 전자정부 기능 가지고 배치 테스트를 해보고 테스트 결과를 텍스트로 받아보는 것을 실습해볼것이다.

일단 아래처럼 프로젝트 먼저 따라서 생성해주기.

프로젝트 만들어주고 그 다음은 eGovFrame > Test > Batch Job Test로 들어가서,
Job 정보 중 DelimetedToDelimetedJob이랑 Job Launcher 정보를 선택 후 Generate Batch Test File 버튼을 클릭.
그 다음은 아래 이미지 따라서 Test Case 파일 생성해주고 테스팅 후 잘 파일 생성되었는지 확인하기.

아래와 같이 테스트 파일 즉 코드가 잘 생성된 것을 볼 수 있다.

import static org.junit.Assert.assertEquals;
import java.util.Date;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import egovframework.rte.bat.core.launch.support.EgovBatchRunner;
@RunWith(SpringJUnit4ClassRunner.class)

/** 
 * Test File Information 
 * Job:: /egovframework/batch/job/delimitedToDelimitedJob.xml
 * Job Launcher:: /egovframework/batch/context-batch-job-launcher.xml
 * job Parameters:: Date_Default Timestamp
 */ 

@ContextConfiguration(locations = { "/egovframework/batch/context-batch-job-launcher.xml", "/egovframework/batch/job/delimitedToDelimitedJob.xml", "/egovframework/batch/context-batch-datasource.xml" })
public class BatchJobTest{

	@Autowired
	@Qualifier("eGovBatchRunner")
	private EgovBatchRunner egovBatchRunner;

	@Test
	public void testJobRun() throws Exception {

		String jobName = "delimitedToDelimitedJob";

		JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
		jobParametersBuilder.addLong("timestamp", new Date().getTime());
		

		String jobParameters = egovBatchRunner.convertJobParametersToString(jobParametersBuilder.toJobParameters());

		long executionId = egovBatchRunner.start(jobName, jobParameters);

		assertEquals(BatchStatus.COMPLETED, egovBatchRunner.getJobExecution(executionId).getStatus());

	}
}

미리 제공된 배치 교육프로젝트를 하나 실행해서 배치 돌려봐서 아래처럼 나오는 것을 확인해보아따.

배치를 File to File로 하기 위해서는 먼저 소스코드를 수정해 주어야 한다.
파일을 읽어 DB에 입력하는 대신 File 쓰기를 위해서 bean에 매핑하는 클래스를EgovJdbcBatchItemWriter 대신 FlatFileItemWriter로 변경하고 파일 저장할 위치 절대경로로 지정하고 해주면 된다.

<bean id="fixedLengthToJdbcJob.fixedLengthToJdbcStep.jdbcItemWriter"
		class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
		<property name="resource" 
		    value="file:C:/eGovFrame-3.10.0/workspace.edu/lab302-batch/src/main/resources/egovframework/batch/data/outputs/txtOutput3.txt" />
		<property name="lineAggregator">
			<bean class="egovframework.rte.bat.core.item.file.transform.EgovFixedLengthLineAggregator">
				<property name="fieldExtractor">
					<bean class="egovframework.rte.bat.core.item.file.transform.EgovFieldExtractor">
						<property name="names" value="name,credit" />
					</bean>
				</property>
				<property name="fieldRanges" value="9,2" />
			</bean>
		</property>
	</bean>

"txtOutput3.txt" 라고 지정해 주었기 때문에 서버를 내렸다 다시 실행했을 때 정상 실행되었다면,
아래와 같이 잘 파일이 생성된 것을 확인할 수 있다.