引言
在写单元测试时,免不了遇到私有方法、数据库等一些操作,此时就需要一些mock处理。
代码实践
service层demo源码
publicclassDemoServiceImpl{@AutowiredprivateDemoMapper demoMapper;@Override@Transactional(rollbackFor =Exception.class)publicBooleandeleteById(Long id){//获取实体DemoEntity entity =this.getDemoEntity(id);
demoMapper.deleteById(entity);returntrue;}privateDemoEntitygetDemoEntity(){//构造queryWrapperQueryWrapper<DemoEntity> query =Wrappers.query();//根据所属系统、是否删除筛选菜单列表
query.lambda()//id筛选.eq(DemoEntity::getId, id)DemoEntity entity = demoMapper.selectOne(query);return entity;}}
service层单元测试
@PowerMockRunnerDelegate(SpringRunner.class)@RunWith(PowerMockRunner.class)publicclassDemoServiceImplTest{/**
* 注入service
*/@InjectMocksprivateDemoServiceImpl demoService;/**
* mapper
*/@MockBeanprivateDemoMapper demoMapper;/**
* before设置
*/@BeforepublicvoidsetUp(){//构建mybatisTableInfoHelper.initTableInfo(newMapperBuilderAssistant(newMybatisConfiguration(),""),DemoEntity.class);}/**
* 测试 deleteById
*/@TestpublicvoiddeleteById()throwsException{//spy serviceDemoServiceImpl spy =PowerMockito.spy(demoService);//mock mapperDemoMapper demoMapperNew =PowerMockito.mock(DemoMapper.class);//注入到service中Whitebox.setInternalState(spy,"demoMapper", demoMapperNew);//构建实体DemoEntity demoEntity =newDemoEntity();//mock mapper结果PowerMockito.when(demoMapperNew.selectOne(any())).thenReturn();//mock 私有方法PowerMockito.when(spy,"getDemoEntity", menuId).thenReturn(demoEntity);//执行方法Boolean result = spy.deleteById(menuId);//断言判断Assert.assertEquals(true, result);}}
本文转载自: https://blog.csdn.net/Andya_net/article/details/128616301
版权归原作者 Andya_net 所有, 如有侵权,请联系我们删除。
版权归原作者 Andya_net 所有, 如有侵权,请联系我们删除。