[英]Mockito with void method in JUnit
我已經實現了一個簡單的 spring boot crud 應用程序來編寫測試用例。 我在刪除操作時遇到了一些麻煩。 當我使用Mockito.when
方法時,它需要一個返回值,而我的刪除方法是非返回類型。
服務等級
@Service
public class EmployeeServiceImpl implements EmployeeService {
private EmployeeDAO employeeDAO;
@Autowired
public EmployeeServiceImpl(EmployeeDAO employeeDAO)
{
this.employeeDAO=employeeDAO;
}
@Override
public void deleteEmployee(Employee emp) throws IllegalArgumentException{
employeeDAO.delete(emp);
}
}
服務測試類
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class EmployeeServiceImplTest {
@MockBean
private EmployeeDAO employeeDAO;
@Autowired
private EmployeeService employeeService;
@Test
public void testDeleteEmployee()
{
int empId=1054;
Employee employee=employee_2();
employee.setEmpId(empId);
// how to write test case for void method
}
private Employee employee_2()
{
Employee employee=new Employee();
employee.setEmpName("NafazBenzema");
employee.setSalary(12000.00);
return employee;
}
}
您可以使用Mockito.doNoting()
:
Mockito.doNothing().when(employeeDAO).deleteEmployee(any());
您可以在模擬上使用 doNothing 或 doThrow 來模擬模擬的行為。
Mockito.doNothing().when(employeeDAO).delete(any());
或者
Mockito.doThrow(new RuntimeException()).when(employeeDAO).delete(any());
但是,實際上不需要 doNothing,因為這將是具有 void 返回類型的模擬函數的默認行為。 但是,您可能想要verify
調用了此方法。 例如:
verify(employeeDAO).delete(any());
謝謝你。
但對我來說,我不得不更換employeeService
與employeeDAO
.The employeeService
與注解@Autowired
注釋和它拋出NotaMockAnnotation
例外。
Mockito.doNothing().when(employeeDAO).delete(employee);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.