1、首先使用SquareTest插件生成模板
2、生成后会测试类中会出现一个当前类的属性值
例如:测试类名为A 生成的被测试类中会有一个
privateAServiceImplAServiceImplTest;
需要在属性上面加上注解@InjectMocks@InjectMocksprivateAServiceImplAServiceImplTest;3、添加当前所属实体类的Mapper@MockprivateAMapper mockAMapper
4、新增before方法
@BeforeEachvoidbefore(){TableInfoHelper.initTableInfo(newMapperBuilderAssistant(newMybatisConfiguration(),""),A.class);}5、删除setUp方法中的创建对象的代码
@BeforeEachvoidsetUp(){AServiceImplTest=newAServiceImpl();//下面还有很多赋值操作,只需删除此行即可......}
1、 调用其他service层方法
被测试代码(查询):
List<实体类> list = bService.lambdaQuery().eq(字段名,值).orderByDesc(字段名).list();//.one
测试代码(查询):
//测试时不用管被测试代码的sql拼接条件,只需要注意调用的方法即可TableInfoHelper.initTableInfo(newMapperBuilderAssistant(newMybatisConfiguration(),""), 实体类.class);//提升复用性,此行代码可以放在before方法中
实体类Mapper mapper =mock(实体类Mapper.class);LambdaQueryChainWrapper<实体类> queryChainWrapper =newLambdaQueryChainWrapper<>(mapper);when(mockBService.lambdaQuery()).thenReturn(queryChainWrapper);when(queryChainWrapper.list()).thenReturn(Arrays.asList());//.one时 queryChainWrapper.one()
2、 调用本service层方法
被测试代码(新增):
boolean b =super.save(实体类);//boolean b = this.save(实体类)也一样
测试代码(新增):
when(AServiceImplTest.getBaseMapper().insert(any())).thenReturn(1);
被测试代码(查询):
List<CybCar> carList =lambdaQuery().eq(字段名, 值).eq(字段名, 值).eq(字段名, 值).orderByDesc(字段名).list();
测试代码(查询):
when(serviceImpl.getBaseMapper().selectList(any())).thenReturn();
被测试代码(更新):
boolean b =super.updateById();//boolean b = this.updateById()也一样
测试代码(更新):
when(AServiceImplTest.getBaseMapper().updateById(any())).thenReturn(1);
3、其他问题
1、如果报错: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache forthis entity [com.gogbuy.cyb.xxx.xxx.entity.实体类]
添加此行代码即可
TableInfoHelper.initTableInfo(newMapperBuilderAssistant(newMybatisConfiguration(),""), 实体类.class);2、本测试类不能和别的mapper兼容的问题(报空指针异常):
实体类Mapper mockUMapper =mock(实体类Mapper.class);AServiceImplTest.实体类Mapper= mockUMapper;when(mockUMapper.xxx()).thenReturn();
本文转载自: https://blog.csdn.net/m0_61260825/article/details/133747349
版权归原作者 Liu_Tong01 所有, 如有侵权,请联系我们删除。
版权归原作者 Liu_Tong01 所有, 如有侵权,请联系我们删除。