Spring batch 无法在Spring批处理中自动连接JobLauncherTestUtils

Spring batch 无法在Spring批处理中自动连接JobLauncherTestUtils,spring-batch,Spring Batch,我在执行spring批处理中的一个步骤的功能测试时遇到以下错误。 获取以下错误: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.batch.test.JobLauncherTestUtils] found for dependency: expected at least 1 bean which q

我在执行spring批处理中的一个步骤的功能测试时遇到以下错误。 获取以下错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.batch.test.JobLauncherTestUtils] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
下面是用于此操作的配置文件和测试文件

custom-context.xml文件:

<batch:job id="custom.entities">
    <batch:step id="entity.processor">
        <batch:tasklet>
            <batch:chunk reader="customReader" writer="customWriter" commit-interval="1" />
        </batch:tasklet>
    </batch:step>
</batch:job>

<bean id="customReader" class="com.batch.custom.EntityReader" scope="step">
    <property name="providerId" value="#{jobParameters['providerId']}" />
</bean>

<bean id="customWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="resource" value="file:c:/Temp/ledgers-output.txt"/>
    <property name="lineAggregator">
        <bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
    </property>
</bean>

CustomJobTest.java文件

@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;

@Autowired
private ItemReader<WatchlistDataSet> reader;

@Test
@DirtiesContext
public void testLaunchJob() throws Exception {

    JobParameters jobParameters = new JobParametersBuilder().addString("providerId", "cnp_1").toJobParameters();

    JobExecution exec = jobLauncherTestUtils.launchStep("entity.processor", jobParameters);

    assertEquals(BatchStatus.COMPLETED, exec.getStatus());

}

public JobLauncherTestUtils getJobLauncherTestUtils() {
    return jobLauncherTestUtils;
}

public void setJobLauncherTestUtils(JobLauncherTestUtils jobLauncherTestUtils) {
    this.jobLauncherTestUtils = jobLauncherTestUtils;
}
@Autowired
私有JobLauncherTestUtils JobLauncherTestUtils;
@自动连线
私人项目阅读器;
@试验
@肮脏的环境
public void testLaunchJob()引发异常{
JobParameters JobParameters=new JobParameters Builder().addString(“providerId”、“cnp_1”).toJobParameters();
JobExecution exec=jobLauncherTestUtils.launchStep(“entity.processor”,jobParameters);
assertEquals(BatchStatus.COMPLETED,exec.getStatus());
}
PublicJobLauncherTestUtils getJobLauncherTestUtils(){
返回jobLauncherTestUtils;
}
public void setJobLauncherTestUtils(JobLauncherTestUtils JobLauncherTestUtils){
this.jobLauncherTestUtils=jobLauncherTestUtils;
}

在谷歌搜索发现需要在用于JUnit测试的context.xml中指定bean定义之后

<bean id="jobLauncherTestUtils" class="org.springframework.batch.test.JobLauncherTestUtils" >
    <property name="job" ref="custom.entities"/>
    <property name="jobRepository" ref="jobRepository"/>
    <property name="jobLauncher" ref="jobLauncher"/>
</bean>

使用上述定义,我能够自动连接JobLauncherTestUtils