junit - 实际上与这个模拟错误的交互为零?
问题描述
我正在尝试编写测试用例,但遇到了这个错误。如何解决此错误?
@Override
public boolean isDuplicateSystemDetail(SystemFormBean systemFormBean){
List<BrmSystem> list = systemDao.isDuplicateSystemDetail(systemFormBean);
if(CollectionUtils.isNotEmpty(list)){
return true;
}else{
return false;
}
}
---------------------------------------------------------------------------
@Test
public void isDuplicateSystemDetail_Should_Return_True(){
List<BrmSystem> list = new ArrayList<BrmSystem>();
BrmSystem brmSystem = new BrmSystem();
SystemFormBean systemFormBean = new SystemFormBean();
brmSystem.setSystemName("Test");
list.add(brmSystem);
when(systemDao.isDuplicateSystemDetail(systemFormBean)).thenReturn(list);
}
解决方案
可能 SystemFormBean 类不会覆盖 equals()。因此,当 isDuplicateSystemDetail(systemFormBean) 调用时,它具有该类的另一个对象作为参数,该参数与您手动创建的参数不同(默认情况下 Object.equals() 比较内存地址,在您的情况下为假) .
尝试覆盖 equals() 以通过 SystemFormBean 的 fe 实际字段进行比较或将“when”子句重写为
systemDao.isDuplicateSystemDetail(Mockito.any(SystemFormBean.class))