====== 배치실행환경 예제 Junit Test 설명====== ===== 개요 ===== 배치실행환경 예제에서는 Junit을 이용하여 배치를 수행하고 성공여부 판단 및 테스트 내용 확인을 한다. 초보 사용자의 이해를 돕기위해 예제에서 공통으로 사용하는 JunitTest의 기본설정과 테스트 수행방법을 설명한다. ===== 설명 ===== ==== 예제 Junit Test 기본 구조==== === @ContextConfiguration === == == ContextConfiguration 은 컨텍스트를 얻어 그 내용을 참조하는 역할을 하며, 배치실행환경 예제에서는 배치수행에 필요한 설정파일들을 여기서 참조하도록 설정되어 있다. \\ ✔ Launcher설정파일, Job설정파일, JobLauncherTestUtils를 사용하기 위한 별도의 설정파일(ex.job-runner-context.xml) 등이 명시된다. @ContextConfiguration(locations = { "/egovframework/batch/simple-job-launcher-context.xml", "/egovframework/batch/jobs/parallelJob.xml", "/egovframework/batch/job-runner-context.xml" }) public class EgovParallelJobFunctionalTests { ... } ✔ 공통으로 사용되는 설정파일이 있을 경우, 다음과 같이 부모클래스에 담고 이를 상속받아 사용할 수 있다. 부모클래스 : EgovAbstractIoSampleTests 자식클래스 : EgovPreProcessorFunctionalTests @ContextConfiguration(locations = { "/egovframework/batch/simple-job-launcher-context.xml", "/egovframework/batch/job-runner-context.xml"}) public abstract class EgovAbstractIoSampleTests { ... } @ContextConfiguration(locations = { "/egovframework/batch/jobs/preProcessorJob.xml" }) public class EgovPreProcessorFunctionalTests extends EgovAbstractIoSampleTests { ... } === JobLauncherTestUtils === == == Spring 에서 제공하는 클래스로 배치수행에 필요한 메소드들이 포함되어 있다. \\ ✔ JobLauncherTestUtils 클래스를 사용할 경우 ContextConfiguration 에서 job-runner-context.xml을 설정한다. @Autowired private JobLauncherTestUtils jobLauncherTestUtils; ... === setDataSource(DataSource dataSource) === == == 배치 수행 시, DB 연결을 위한 dataSource 정보를 셋팅하는 부분이다. // simpleJdbcTemplate 설정 private SimpleJdbcTemplate simpleJdbcTemplate; // dataSource 설정 @Autowired public void setDataSource(DataSource dataSource) { this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); } ... === setUp() === == == 예제에서 DB 관련한 데이터처리에 앞서 초기값을 셋팅하는 부분이다. 주로 테이블의 기존 내용을 Delete 하고 초기값을 Insert 한다. @Before public void setUp() { simpleJdbcTemplate.update("DELETE from CUSTOMER"); simpleJdbcTemplate.update("INSERT INTO CUSTOMER (ID, VERSION, NAME, CREDIT) VALUES (1, 0, 'customer1', 100000)"); simpleJdbcTemplate.update("INSERT INTO CUSTOMER (ID, VERSION, NAME, CREDIT) VALUES (2, 0, 'customer2', 100000)"); simpleJdbcTemplate.update("INSERT INTO CUSTOMER (ID, VERSION, NAME, CREDIT) VALUES (3, 0, 'customer3', 100000)"); simpleJdbcTemplate.update("INSERT INTO CUSTOMER (ID, VERSION, NAME, CREDIT) VALUES (4, 0, 'customer4', 100000)"); } === @ Test === == == 배치를 실제로 수행하고, 테스트해야 하는 내용이 포함된 부분으로 예제별로 그 내용이 상이하다. \\ ✔ 테스트 내용을 구성하는 방법은 참고차료를 활용한다. @Test public void testUpdateCredit() throws Exception { // 배치 수행 JobExecution jobExecution = jobLauncherTestUtils.launchJob(getUniqueJobParameters()); // 테스트 내용 및 결과 확인 assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals(inputs.size(), outputs.size()); } ==== 예제 Junit Test 수행 방법 ==== === JunitTsets 수행 === == == 해당클래스에서 마우스오른쪽 버튼을 클릭하고 Run As > JUnitTest 를 클릭하여 [[egovframework:dev2:tst:test_case#Test Case 실행| JunitTest를 수행]]한다. ===== 참고자료 ===== [[egovframework:dev2:tst:test_case|Junit Test 사용법]]