![](/img/trans.png)
[英]Why is a method call shown as not covered when the code within the method is covered with emma?
[英]Why code in not covered for verify in mokito?
這是具有保存方法的服務文件。 此方法不在代碼覆蓋范圍內。 這些存儲庫注意到但只是 jpa 存儲庫的
@Service
public class ProcessFileService {
@Autowired
private ProcessFileRepository processFileRepository;
@Autowired
private ProcessRunRepository processRunRepository;
@Transactional
public void save(ProcessRun processRun, List<ProcessFile> processFiles) {
processRunRepository.save(processRun);
for (ProcessFile processFile : processFiles) {
processFile.setProcessRun(processRun);
processFileRepository.save(processFile);
}
}
}
這是測試 class 並由 verify() 完成
@ExtendWith(MockitoExtension.class)
public class ProcessFileServiceTest {
@Mock
private ProcessFileRepository processFileRepository;
@Mock
private ProcessRunRepository processRunRepository;
@Test
void ProcessSave() {
ProcessRun processRun = new ProcessRun();
processRun.setEndDateTime("30/08/2022");
processRun.setNumFilesFailed(1L);
processRun.setNumFilesProcessed(1L);
processRun.setNumFilesTransferred(1L);
processRun.setStartDateTime("30/08/2022");
ProcessFile processFile = new ProcessFile();
processFile.setCurrentRetryAttempt(1);
processFile.setFileName("file.txt");
processFile.setSuccessfulYN(true);
processFile.setTransferDateTime("30/08/2022");
List<ProcessFile> processFiles = new ArrayList<ProcessFile>();
processFiles.add(processFile);
ProcessFileService processFileService = mock(ProcessFileService.class);
doNothing().when(processFileService).save(processRun, processFiles);
processFileService.save(processRun, processFiles);
verify(processFileService, times(1)).save(processRun, processFiles);
}
}
請在這里幫助我,我在這里缺少什么,我是 junit 的新手。
您在測試中模擬了您的 object,此外,在測試中的存根方法什么也不做(順便說一句,這是模擬的默認行為)。
您需要在測試中構造一個適當的 class 實例,而不是模擬它。 使用 MockitoExtension,一個簡單的方法是:
@ExtendWith(MockitoExtension.class)
public class ProcessFileServiceTest {
@Mock
private ProcessFileRepository processFileRepository;
@Mock
private ProcessRunRepository processRunRepository;
@InjectMocks
ProcessFileService processFileService
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.