亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Mockito 創建 Chunk Tasklet 的單元測試

使用 Mockito 創建 Chunk Tasklet 的單元測試

白豬掌柜的 2023-06-28 16:01:06
我有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在為了解決這個問題,我應該設法為讀者打開文件,或者將微線程的創建委托給其他可以處理它的東西,但是如何呢?
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

當在面向塊的步驟之外使用時,應手動打開/關閉項目讀取器/寫入器。因此,就您的情況而言,您需要先自行打開閱讀器,然后再使用它來讀取數據。

查看完整回答
反對 回復 2023-06-28
  • 1 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號