Как загрузить Spring Batch Job, используя JobLauncherTestUtils для тестов - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу протестировать работу, которую я использовал для загрузки в качестве SpringBootTest и SpringJunit4Runner. Когда я обновился до JUnit 5, класс jobLauncherTestUtils больше не загружается. Проект представляет собой приложение Spring Batch, использующее Spring Boot 2.2.0.RELEASE. Моя основная конфигурация называется AppConfig, и я настроил шаг и задание как бины, которые я могу автоматически связать в тестовом классе. Однако контекст приложения, который раньше загружался, теперь загружается дольше. Ошибка говорит мне, что задание не добавлено в jobLauncherTestUtils. Я не понимаю, почему работа больше не может быть загружена, когда она могла раньше. Буду признателен за помощь в устранении этой проблемы

src / main / com / indigo / search / config / AppConfig

    @Bean
    public Step orderIntakeStep() {
       return stepBuilderFactory.get("orderIntakeStep")
               .<Order, Order>chunk(30)
               .reader(orderReader())
               .processor(orderProcessor())
               .writer(orderWriter())
               .build();
    }


    @Bean(name = "orderIntakeJob")
    public Job orderIntakeJob() {
    return jobBuilderFactory.get("orderIntakeJob")
            .incrementer(new RunIdIncrementer())
            .flow(orderIntakeStep())
            .end()
            .build();
     }
      ...
  }



   @ExtendWith(SpringExtension.class)
   @SpringBatchTest
   @Transactional(propagation = Propagation.NOT_SUPPORTED)
   class OrderIntakeJobTest {

       @Autowired
       private JobLauncherTestUtils jobLauncherTestUtils;

       @Autowired
       private JobRepositoryTestUtils jobRepositoryTestUtils;

       @Autowired
       private JobLauncher jobLauncher;

       @Autowired
       Job orderIntakeJob;
       ...

      @Before 
      public void initJob(){
         jobLauncherTestUtils.setLauncher(jobLauncher);
         jobLauncherTestUtils.setJobLauncher(jobLauncher);
         jobLauncherTestUtils.setJobRepository(jobRepository);
         jobLauncherTestUtils.setJob(orderIntakeJob);
      j

   }

1 Ответ

0 голосов
/ 11 апреля 2020

Из того, что вы поделились, нет ничего, что импортирует класс конфигурации, который содержит тестируемое задание в OrderIntakeJobTest. Вы должны иметь что-то вроде:

@ExtendWith(SpringExtension.class)
@SpringBatchTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@ContextConfiguration(classes = MyJobConfiguration.class) // this is where the job under test is defined
class OrderIntakeJobTest {

   // ...

}
...