我需要从jdbcTemplate.query()
填充模拟列表,以便它可以通过未通过空检查来增加覆盖率。
我尝试过
List<ABC> list=new ArrayList<>();
list = jdbcTemplate.query(sqlQuery,new Object[]{id,name}, new Mapper());
if(list.isEmpty())
return null;
else if(!list.isEmpty){
for(....)
}
测试类
@InjectMocks
DaoImpl dao;
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void retrieveResult(){
when(jdbcTemplate.query(Mockito.anyString(),Mockito.any(Object[].class),Mapper.class)).thenReturn(new ArraList<>);
答案 0 :(得分:1)
以下任何一个模拟声明都将编译并匹配query
签名。
when(jdbcTemplate.query(
Mockito.anyString(),
Mockito.any(Object[].class),
Mockito.any(Mapper.class)
)).thenReturn(list);
when(jdbcTemplate.query(
Mockito.anyString(),
Mockito.any(Object[].class),
ArgumentMatchers.<RowMapper<Mapper>>any())
)).thenReturn(list);
特别是:
Mockito.anyString()
与代码中的sqlQuery
参数匹配Mockito.any(Object[].class)
与代码中的new Object[]{id,name}
参数匹配Mockito.any(Mapper.class)
/ ArgumentMatchers.<RowMapper<Mapper>>any()
与代码中的new Mapper()
参数匹配