У меня есть класс, содержащий Бины, используемые в Пакетном Задании:
@Configuration
public class JobBeans {
@Bean
JsonItemReader<Rabbit> jsonReader() {
return new JsonItemReaderBuilder<Rabbit>()
.jsonObjectReader(new JacksonJsonObjectReader<>(Rabbit.class))
.resource(new ClassPathResource("rabbits.json"))
.name("rabbitReader")
.build();
}
}
Как я могу тестировать Бины, как это?
Мой текущий комплект тестов выглядит так:
@ContextConfiguration(classes = JobBeans.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
@RunWith(SpringRunner.class)
public class RabbitReaderTest {
@Autowired
private JsonItemReader<Rabbit> sut;
@Test
public void read() throws Exception {
assertNotNull(sut.read());
}
}
Выдает NPE во время выполнения теста:
10: 40: 07.684 [Thread-0] WARN org.springframework.beans.factory.support.DisposableBeanAdapter - вызов метода уничтожения«Закрыть» не удалось в bean-компоненте с именем «rabbitReader» org.springframework.batch.item.ItemStreamException: ошибка при закрытии чтения элемента в org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.close (AbstractItemCountingItemStreamItemReader.extReader).refle.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.in.kej.hofMethod.java:498) в org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod (DisposableBeanAdapter.java:364) в org.springframework.beans.factory.support.DisposableBeanAdapter.destroy (DisposableBeanAdapter.java:287) в org.springframework.beans.factory.avaaneпо адресу org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton (DefaultSingletonBeanRegistry.java:554) по адресу org.springframework.beans.factory.support.DefaultListableBeanFactory.destorySactis.beef_bebe_pr.support.: 1033) в org.springframework.context.support.AbstractApplicationContext.doClose (AbstractApplicaionContext.java:1009) at org.springframework.context.support.AbstractApplicationContext $ 2.run (AbstractApplicationContext.java:928) Вызвано: java.lang.NullPointerException: null в org.springframework.batch.itebOj.jpg(JacksonJsonObjectReader.java:89) в org.springframework.batch.item.json.JsonItemReader.doClose (JsonItemReader.java:123) в org.springframework.batch.item.support... 14 общих кадров опущено
Похоже, что InputStream имеет значение null, даже если файл находится в каталоге ресурсов тестирования.