在许多春季批中仅测试一项工作

时间:2018-10-08 18:30:32

标签: spring spring-batch

我有两个工作。我正在尝试测试一项工作。

这是我正在尝试的:

@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;

@Autowired
@Qualifier("jobNumber1")
private Job job;

@Test
public void test() {
    try {
        jobLauncherTestUtils
                .getJobLauncher()
                .run(job, new JobParametersBuilder()
                .addString("--spring.batch.job.names", "jobNumber1")
                .toJobParameters());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

但是当我看到日志时,它正在运行两个作业。如何使它仅测试1个测试?谢谢

我还试图在JobLauncherTestUtils中添加一个作业

@Bean
public JobLauncherTestUtils jobLauncherTestUtils() throws Exception {
    return new JobLauncherTestUtils() {
        @Override
        @Autowired
        public void setJob(@Qualifier("jobNumber1") Job job) {
            super.setJob(job);
        }
    };
}

,然后执行jobLauncherTestUtils.launchJob()。仍然两个作业都在运行。

1 个答案:

答案 0 :(得分:1)

您正在传递Spring Boot参数(--spring.batch.job.names)作为Spring Batch参数。因此,Spring Boot并不知道它,并且仍将运行这两个作业。您需要:

  • --spring.batch.job.names=jobNumber1传递到您用来测试工作的命令行
  • 或在测试资源的spring.batch.job.names=jobNumber1文件中添加application.properties

希望这会有所帮助。