目录
1、先看一个例子2、这是个错误的例子3、 Mockito.when时参数用Mockito.any(实际参数对象的class)4、 Mockito.when时重写静态argThat中ArgumentMatcher对象中的matches方法
大家都知道通过Mockito 可以mock数据,当参数是字符串或者基本数据类型时,没有问题,但是当参数是对象时返回结果可能是null或者集合的长度为0,如何解决呢?
1、先看一个例子
接口的实现类
@Service("firstService")
public class FirstServiceImpl implements FirstService {
@Resource
FirstDao firstDao;
@Override
public List find(User user) {
List list= firstDao.find(user);
return list;
}
}
单元测试
@RunWith(SpringJUnit4ClassRunner.class)
public class FirstServiceTest {
@Mock
FirstDao firstDao;
@InjectMocks
FirstService firstService=new FirstServiceImpl();
@Test
public void getUserTest1(){
//准备mock返回的数据
User user = new User();
user.setId(1L);
user.setName("姓名");
user.setAge("16");
List userList=new ArrayList();
userList.add(user);
//mock服务或者类中的某个方法,当参数是什么时,返回值是什么
Mockito.when(firstDao.find(user)).thenReturn(userList);
User user1 = new User();
user1.setId(1L);
user1.setName("姓名");
user1.setAge("16");
//执行单元测试逻辑
List users = firstService.find(user1);
//断言
Assert.assertFalse(users.size() |