Я запускаю интеграционные тесты, используя CommandLineJobRunner из Spring Batch. Если я запускаю его один за другим, то он работает отлично, но когда я собираю его чистым и устанавливаю, он не движется вперед, он застревает в бесконечном ожидании.
например: Запуск job.eg.egJobIT ... .
package job.eg;
import com.**;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@ContextConfiguration(locations = { "classpath:*.xml"})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@TestPropertySource("classpath:application.properties")
public class EgJobIT {
@Autowired
@Qualifier(value="EG_JOB")
private Job job;
@Autowired
private JobLauncher jobLauncher;
@Autowired
private JobRepository jobRepository;
@Test
public void launchJob() throws Exception {
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
jobParametersBuilder.addString("legacy.date.format", "yyyyMMdd");
JobParameters jobParameters = jobParametersBuilder.toJobParameters();
String[] jobParamArr = MapUtil.mapToString(jobParameters);
String[] contextParam = new String[] { "file:src/test/resources/*.xml", "EG_JOB" };
String[] args = Stream.of(contextParam, jobParamArr).flatMap(Stream::of).toArray(String[]::new);
final Queue<Integer> exitCode = new ArrayBlockingQueue<Integer>(1);
CommandLineJobRunner.presetSystemExiter(new SystemExiter() {
@Override
public void exit(int status) {
exitCode.add(status);
}
});
//here it is calling main() method.
CommandLineJobRunner.main(args);
Assert.assertEquals(0, exitCode.poll().intValue());
}
}
Примечание: пожалуйста, пометьте * как некоторое имя класса или файла конфигурации.