This is the service file which has save method. This method is not covering in code coverage. These repository's noting but just a jpa repository's
@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);
}
}
}
This is the Test class and its done by 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);
}
}
Please help me here what is i am missing here, i am new to junit.
You mocked your object under test, and in addition, stubbed method under test to do nothing (which by the way is the default behaviour for mocks).
You need to construct a proper instance of class under test, not mock it. With MockitoExtension, a simple way to do this is:
@ExtendWith(MockitoExtension.class)
public class ProcessFileServiceTest {
@Mock
private ProcessFileRepository processFileRepository;
@Mock
private ProcessRunRepository processRunRepository;
@InjectMocks
ProcessFileService processFileService
...
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.