Java mockito单元测试实现过程解析
待测试的服务接口:
publicinterfaceItemService{
StringgetItemNameUpperCase(StringitemId);
}
预览
待测试的服务的实现类:
@Service
publicclassItemServiceImplimplementsItemService{
@Resource
privateItemRepositoryitemRepository;
@Override
publicStringgetItemNameUpperCase(StringitemId){
Itemitem=itemRepository.findById(itemId);
if(item==null){
returnnull;
}
returnitem.getName().toUpperCase();
}
}
//测试用例
importorg.junit.Before;
importorg.junit.Test;
importorg.mockito.InjectMocks;
importorg.mockito.Mock;
importorg.mockito.MockitoAnnotations;
importstaticorg.assertj.core.api.Assertions.assertThat;
importstaticorg.mockito.Mockito.*;
publicclassItemServiceTest{
@Mock
privateItemRepositoryitemRepository;
@InjectMocks
privateItemServiceImplitemService;
@Before
publicvoidsetUp(){
MockitoAnnotations.initMocks(this);
}
/**
*如果从存储层查询到一个Item,那么它的name将被转化为大写.
*/
@Test
publicvoidshouldReturnItemNameInUpperCase(){
//Given
ItemmockedItem=newItem("it1","Item1","Thisisitem1",2000,true);
when(itemRepository.findById("it1")).thenReturn(mockedItem);
//When
Stringresult=itemService.getItemNameUpperCase("it1");
//Then
verify(itemRepository,times(1)).findById("it1");
assertThat(result).isEqualTo("ITEM1");
}
}
Mockito的更多高级用法请参考官方网站和框架配套wiki。如果需要mock静态方法、私有函数等,可以学习 PowerMock,拉取其源码通过学习单元测试来快速掌握其用法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。