できること
Spring Batchの各Stepを単独で実行できる。もちろんJobの実行も。
手順
-
まずは普通にUnitTestクラスを作る。
-
@RunWithの指定に、SpringJUnit4ClassRunnerを設定。
(mavenを使ってる場合は、dependencyにspring-testが必要) -
@ContextConfigurationで、SpringBatch定義と、テスト用のJobLauncherTestUtilsの設定ファイルを指定。(mavenを使っている場合は、dependencyにspring-batch-testが必要)
-
UnitTestクラスに@AutowiredでjobLauncherTestUtilsをDIさせる。
サンプルコード
test-context.xml
<bean id="jobLauncherTestUtils" class="org.springframework.batch.test.JobLauncherTestUtils">
<property name="job" ref="sampleJob" />
<property name="jobRepository" ref="jobRepository" />
<property name="jobLauncher" ref="jobLauncher" />
</bean>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/batch-context.xml", "/test-context.xml" })
public class SampleTest {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Test
public void testStep() throws Exception {
// 単独のStepの実行
jobLauncherTestUtils.launchStep("sampleStep");
}
@Test
public void testJob() throws Exception {
// Jobの実行 もちろんパラメータ設定もできる
jobLauncherTestUtils.launchJob(new JobParameters());
}
}