[英]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.