При написании тестового примера Junit для класса с @JobScope, было получено сообщение об ошибке java .lang.IllegalStateException: Нет области, зарегистрированной для имени области «job» - PullRequest
1 голос
/ 06 января 2020

Получена эта ошибка при выполнении тестовых случаев - Нет области, зарегистрированной для имени области 'job'

Мой класс выглядит так:

     @Service  
     @JobScope  
     public class JobService{

        @Value("#{jobParameters['abc']}")
        private ABC abc;

        @Override
        public void beforeJob(JobExecution jobExecution) {
        .......
        }
      }

Код Мой тестовый класс выглядит так:

     @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, JobScopeTestExecutionListener.class })  

    @RunWith(SpringRunner.class)  
    public class JobServiceTest{  

    public JobExecution getJobExecution() {  
            JobExecution execution = MetaDataInstanceFactory.createJobExecution();  
            execution.getExecutionContext().putString("input.data", "foo,bar,spam");  
            return execution;  
        }  

        @Test  
        public void beforeJobTest() {  
            jobService.beforeJob(getJobExecution());
        }
    }

1 Ответ

1 голос
/ 24 января 2020

Добавление @EnableBatchProcessing в тестовый класс сработало для меня ... но я не уверен, хотите ли вы поместить это в тестовый класс. Вероятно, лучше использовать класс Config и импортировать конфигурацию в свой тестовый класс.

@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, JobScopeTestExecutionListener.class })  
@EnableBatchProcessing
@RunWith(SpringRunner.class)  
public class JobServiceTest{  

    public JobExecution getJobExecution() {  
        JobExecution execution = MetaDataInstanceFactory.createJobExecution();  
        execution.getExecutionContext().putString("input.data", "foo,bar,spam");  
        return execution;  
    }  

    @Test  
    public void beforeJobTest() {  
        jobService.beforeJob(getJobExecution());
    }
}
...