====== 배치실행환경 예제 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 사용법]]