实际开发中,在进行测试的时候,我们可能不想针对比较简单的crud的dao进行访问数据库,这时候可以使用junit和mockito的组合进行模拟。
使用spring时,service一般会依赖dao,使用mockito可以模拟出一个dao,你让它返回一个你想要返回的对象,这时候,我们只需要专注于测试我们的service中的逻辑是否正确即可。
示例代码如下:
public class UserRelationServiceTest {
private final Logger logger = LoggerFactory.getLogger(UserRelationServiceTest.class);
//mockito模拟一个service需要的对象出来
@Mock
private InvitedRepository invitedRepository;
//这是依赖dao的service,injectmocks注解表示你要注入的目标
@InjectMocks
private UserRelationService userRelationService = new UserRelationService();
@Before
public void setUp() {
logger.info("--------setup--------");
MockitoAnnotations.initMocks(this);
List<InviteRelation> list = new ArrayList<>();
InviteRelation temp = new InviteRelation();
temp.setId(1L);
temp.setInviteDate("2018-10-01 12:12:00");
User from = new User();
temp.setFrom(from);
User to = new User();
temp .setTo(to);
from.setMobile("13300000000");
to.setMobile("13300000001");
list.add(temp);
when(invitedRepository.getAllInviteRelation(any(Long.class),
any(Long.class))).thenReturn(list);
}
@Test
public void getAllRelation() throws Exception {
List<InviteRelation> list = userRelationService.getAllRelation(1L,100L);
Assert.assertEquals(1,list.size());
}
}