我有Chunk Tasklet一个读者和作者,我正在尝试为其进行单元测试,但我面临多个问题。它似乎最接近我想要做的。@ContextConfiguration(locations = { "classpath:config/beans-unittest-service.xml", "classpath:config/beans-unittest-item.xml" })@RunWith(SpringJUnit4ClassRunner.class)public class KpiMetricFromCsvFileTaskletTest extends RegistryServiceImplTest { @Autowired @Qualifier("kpiMetricCsvItemReader") ItemReader<KpiMetric> reader; @Autowired @Qualifier("kpiMetricCreatorWriter") KpiMetricCreatorWriter writer; @Override @Before public void init() { writer.setRegistryService(registryService); writer.setRegistry(registry); setCreateKpiMeasureBehaviour(); } private ChunkContext createChunkContext() { StepExecution stepExecution = Mockito.mock(StepExecution.class); StepContext stepContext = Mockito.mock(StepContext.class); ChunkContext chunkContext = Mockito.mock(ChunkContext.class); JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution(); Mockito.when(chunkContext.getStepContext()).thenReturn(stepContext); Mockito.when(stepContext.getStepExecution()).thenReturn(stepExecution); Mockito.when(stepExecution.getJobExecution()).thenReturn(jobExecution); return chunkContext; }我的单元测试Class扩展了另一个Class,其中包含将设置模拟对象行为的方法。我有两个配置文件。其中一个包含一个读取器 beankpiMetricCsvItemReader和一个写入器 bean kpiMetricCreatorWriter。在我的单元测试init方法中,我将编写器的服务属性更改为模拟服务对象,我还模拟上下文对象,就像上面链接的答案一样。问题是,在该testTasklet方法中,我想创建一个 Tasklet 并执行它,但是当我运行程序时,出现错误:org.springframework.batch.item.ReaderNotOpenException:Reader 必须打开才能读取。我知道该文件未打开,但是当我使用 Spring Batch 启动我的作业时,我没有收到该错误,因此 Spring 应该自行打开我的文件。现在为了解决这个问题,我应该设法为读者打开文件,或者将微线程的创建委托给其他可以处理它的东西,但是如何呢?
添加回答
举报
0/150
提交
取消