2014-10-14 2 views
2

У меня простая работа, которая тестируется в тесте интеграции с использованием 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». на консоль.

ответ

2

JobLauncherTestUtils необходимо сообщить, какую работу нужно выполнять. Вам необходимо ввести в него задание в вашей конфигурации следующим образом:

<bean id="jobLauncherTestUtils" class="org.springframework.batch.test.JobLauncherTestUtils"> 
    <property name="job" ref="testJob"/> 
</bean> 
+0

Работа сама по себе работает без свойства работы. Я проверил работу с еще одним шагом, без проблем с читателем, процессором и писателем. Кажется, что этот конкретный этап шага никогда не выполняется, независимо от того, выполняется ли еще один шаг до этого или если этот шаг шатл является единственным шагом. – RolandK

Смежные вопросы