배치실행환경 예제 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 를 클릭하여 JunitTest를 수행한다.

참고자료

 
egovframework/rte2/brte/batch_example/run_junit_test.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki