第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在 mockito+J-unit 測試中捕獲或模擬意外異常?

如何在 mockito+J-unit 測試中捕獲或模擬意外異常?

呼啦一陣風(fēng) 2023-02-23 10:01:32
這是我需要為其編寫測試的主文件中的函數(shù)。@Overridepublic void processTask(JobExecutionContext arg0) throws TaskException {    if (BatchInputChannel.DB.toString().equals(runtimeContext.getProperties().getProperty(BATCH_CHANNEL_TYPE))) {        return;    } else if (BatchInputChannel.FILE.toString().equals(runtimeContext.getProperties().getProperty(BATCH_CHANNEL_TYPE))) {        jobLauncher = (JobLauncher) beanFactory.getBean("jobLauncher");        Job job = (Job) beanFactory.getBean("micorpFileLoadJob");        JobParameters jobParameters = new JobParametersBuilder()                                                                .addLong("time", System.currentTimeMillis())                                                                .toJobParameters();        try {           JobExecution jobExecution = jobLauncher.run(job, jobParameters);            System.out.println("jobExecution=="+jobExecution);        } catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException                | JobParametersInvalidException e) {            throw new ProcessingException("File Loading Failed" + e.getMessage());        }    }}這是我試圖創(chuàng)建的測試函數(shù)@Test(expected = JobParametersInvalidException.class)public void processTaskWithFileInputJobFailed5() throws Exception {    when(mockruntimeContext.getProperties()).thenReturn(mockProperties);    when(mockProperties.getProperty(BATCH_CHANNEL_TYPE)).thenReturn("FILE");    when(mockbeanFactory.getBean("jobLauncher")).thenReturn(mockJobLauncher);    when(mockbeanFactory.getBean("micorpFileLoadJob")).thenReturn(mockjob);}當(dāng)我將項(xiàng)目作為 J 單元測試執(zhí)行時(shí),它期望拋出處理異常,但我在預(yù)期中提到了“JobParametersInvalidException”。如您所見,我在此函數(shù)中只添加了一個(gè)異常,為了覆蓋主函數(shù)中的所有異常(在 catch 內(nèi))需要做什么?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

Mockito.doThrow(new JobParametersInvalidException("Invalid")).when(mockJobLauncher).run(mockjob, mockjobParameters);

此 doThrow 未被調(diào)用,因?yàn)閰?shù)不匹配。

在代碼中,參數(shù)設(shè)置為:

   JobParameters jobParameters = new JobParametersBuilder()
                                            .addLong("time", System.currentTimeMillis())
                                            .toJobParameters();

在單元測試中,匹配的 mock 設(shè)置為:

mockjobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();

問題是,毫秒時(shí)鐘幾乎肯定會在設(shè)置測試和執(zhí)行被測代碼之間滴答作響。這意味著這些參數(shù)將不相等,因此不會拋出異常。

更改模擬設(shè)置以期望任何 JobParameters,例如:

Mockito.doThrow(new JobParametersInvalidException("Invalid")).when(mockJobLauncher).run(eq(mockjob), any(JobParameters.class));



查看完整回答
反對 回復(fù) 2023-02-23
  • 1 回答
  • 0 關(guān)注
  • 204 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號