Пакетный тест Spring для динамически созданного задания - PullRequest
0 голосов
/ 26 мая 2020

В моем приложении у меня несколько заданий. Итак, я создал задания Dynami c. У меня нет проблем с запуском этого приложения. Я хочу провести модульное тестирование для динамически созданного задания.

Я хочу установить для своей работы JobLauncherTestUtils.

@RunWith(SpringRunner.class)
@SpringBatchTest()
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@PropertySource("classpath:application.yml")
public class SpringBatchIntegrationTest {
    @Inject
    private JobRepository jobRepository;
    @Inject
    private JobLauncher mJobLauncher;
    private JobLauncherTestUtils jobLauncherTestUtils;
    @Inject
    BatchJobConfig mBatchJobConfig;
    public void initailizeJobLauncherTestUtils() {
        jobLauncherTestUtils = new JobLauncherTestUtils();
        jobLauncherTestUtils.setJobRepository(jobRepository);
        jobLauncherTestUtils.setJob(mBatchJobConfig.createJob());
        jobLauncherTestUtils.setJobLauncher(mJobLauncher);
    }

Вот как я инициализирую JobLauncherTestUtils. Когда я запускаю это, я получаю сообщение об ошибке. Ошибка при создании bean-компонента с именем «jobLauncherTestUtils»: неудовлетворенная зависимость, выраженная через параметр 0 метода «setJob»; Может ли кто-нибудь сказать мне, как мне выполнить весенний пакетный тест для заданий Dynami c. Я мало что знаю о Джуните. Я только начал учить

1 Ответ

0 голосов
/ 26 мая 2020

@SpringBatchTest уже добавляет bean-компонент типа JobLauncherTestUtils в ваш тестовый контекст (см. Javado c), поэтому вам не нужно добавлять его самостоятельно.

Однако для JobLauncherTestUtils требуется компонент задания, и похоже, что у вас его нет в тестовом контексте. Что вы можете сделать, так это определить его в классе конфигурации и импортировать в тестовый контекст, например:

@RunWith(SpringRunner.class)
@SpringBatchTest
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@PropertySource("classpath:application.yml")
@ContextConfiguration
public class SpringBatchIntegrationTest {
   @Inject
   private JobRepository jobRepository;
   @Inject
   private JobLauncher mJobLauncher;
   @Inject
   private JobLauncherTestUtils jobLauncherTestUtils;

   // No need for initailizeJobLauncherTestUtils

   // Add your test method

   @Configuration
   @Import(BatchJobConfig.class) // you might need this or not depending on what's defined in BatchJobConfig
   static class MyJobConfiguration {

      @Bean
      public Job job(BatchJobConfig mBatchJobConfig) {
         return mBatchJobConfig.createJob();
      }

   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...