我有两个工作。我正在尝试测试一项工作。
这是我正在尝试的:
@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()
。仍然两个作业都在运行。
答案 0 :(得分:1)
您正在传递Spring Boot参数(--spring.batch.job.names
)作为Spring Batch参数。因此,Spring Boot并不知道它,并且仍将运行这两个作业。您需要:
--spring.batch.job.names=jobNumber1
传递到您用来测试工作的命令行spring.batch.job.names=jobNumber1
文件中添加application.properties
希望这会有所帮助。