У меня простая работа, которая тестируется в тесте интеграции с использованием JUnit. Я определяю тасклет в моем контексте работы и интегрирую его в компонент «Весенний пакетный». Тем не менее, метод execute() этой задачи никогда не вызывается, и я понятия не имею, почему. У вас есть идея, почему это так?execute() Tasklet никогда не называется
Моя работа контекст:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<import resource="classpath*:/launch-context-test.xml" />
<batch:job id="testJob">
<batch:step id="testStep">
<batch:tasklet ref="myTasklet" />
</batch:step>
</batch:job>
<bean id="myTasklet" class="de.something.MyTasklet" scope="step" />
<bean id="jobLauncherTestUtils" class="org.springframework.batch.test.JobLauncherTestUtils" />
тасклет реализована следующим образом:
public class MyTasklet implements Tasklet {
public MyTasklet() {
System.out.println("Tasklet initialized.");
}
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
System.out.println("Execute Tasklet.");
return RepeatStatus.FINISHED;
}
И это мой тестовый класс:
@ContextConfiguration
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
StepScopeTestExecutionListener.class, JobScopeTestExecutionListener.class })
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest {
@Resource
private JobLauncherTestUtils jobLauncherUtils;
@Test
public void test1() throws Exception {
JobParameters params = new JobParametersBuilder(jobLauncherUtils.getUniqueJobParameters()).toJobParameters();
jobLauncherUtils.launchJob(params);
}
Когда я исполняю свою test1 с помощью JUnit, он печатает только «Tasklet initialized». на консоль.
Работа сама по себе работает без свойства работы. Я проверил работу с еще одним шагом, без проблем с читателем, процессором и писателем. Кажется, что этот конкретный этап шага никогда не выполняется, независимо от того, выполняется ли еще один шаг до этого или если этот шаг шатл является единственным шагом. – RolandK