我有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 應該自行打開我的文件?,F在為了解決這個問題,我應該設法為讀者打開文件,或者將微線程的創建委托給其他可以處理它的東西,但是如何呢?
添加回答
舉報
0/150
提交
取消