0


SpringBoot——Service单元测试(包含mybatis、mapper、私有方法等)

引言

  在写单元测试时,免不了遇到私有方法、数据库等一些操作,此时就需要一些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 所有, 如有侵权,请联系我们删除。

“SpringBoot——Service单元测试(包含mybatis、mapper、私有方法等)”的评论:

还没有评论