当返回类型为空时,是否有任何方法可以在DAO层中为保存方法编写单元测试?我在春季启动项目中使用的是Junit Log4j。
我尝试了许多方法来断言它们。但是因为它们没有返回任何值,所以我无法断言它们。
答案 0 :(得分:6)
如果该方法为void
,则它具有side-effects,否则为no-op。
因此,您调用该方法,然后检查是否发生了所需的副作用。
例如setFoo(7)
应该意味着getFoo()
返回7
,尽管单元测试简单的getter / setter方法是浪费时间。
通常使用模拟对象来检测副作用,但这完全取决于预期的副作用。参见:What is the purpose of mock objects?
答案 1 :(得分:2)
根据您的评论,您需要为保存方法编写一个单元测试。试试这个示例代码,
@Autowired
private EmployeeDAO employeeDAO;
@Test
public void whenValidEmployee_thenShouldSave()
{
EmployeeEntity employee = new EmployeeEntity("1", "Department Name", "Role"); //id, department name and role are passing as constructor parameters
employeeDAO.save(employee);
List<EmployeeEntity> employees = employeeDAO.findAll();
//Assert
Assert.assertEquals(employee.getId(), employees.get(0).getId());
}
答案 2 :(得分:2)
编写可测试的代码对于当今的开发人员而言非常重要。您应该了解,具有void的方法仅出于一个原因是不好的,无论如何都无法测试。我建议您采取以下行动
@Teguwih
答案 3 :(得分:1)
有几种方法可以对返回void的方法进行单元测试。