测试用例之mock对象以及注意事项

92aec337a80542bca7313b7c094f48ab.png

对于比较难以获取的对象,我们可以通过mock的形式直接给对象赋值,当代码运行到这个地方时,会跳过方法,直接用我们mock的值。

以下几个注意事项:

1、对于比较难获取的对象,可以采用mock的方式获取
// 模拟SseRestTemplateUtil的postInApp方法
when(SseRestTemplateUtil.postInApp(anyString(), any(), any(RequestParams.class), eq(ResponsePage.class)))
mock出来的数据 后续对象会直接赋值,不会去查询。查询条件是匹配任何条件。

2、方法的调用:invoke形式调用
Method method = PowerMockito.method(
BillRecognitionDomainService.class,
"fillExpenseUserId",
ExpenseItemVO.class,
ExpenseBillVO.class
);
method.invoke(
billRecognitionDomainService,
expenseItem,
billVO
);

3、结果比对:
assertEquals(123456, expenseItem.getExpenseUserId());
assertNull(expenseItem.getExpenseUserId());

4、对于方法所在的 service类,要注入进来
@InjectMocks
private BillRecognitionDomainService billRecognitionDomainService;

5、当代码不会出现异常时,可以构建异常
PowerMockito.mockStatic(DateUtil.class);
when(DateUtil.dateToDate(any(), any()))
.thenThrow(new ParseException("sss",0));

6、注意隐藏条件里面的分支:
if (!list.isEmpty() && list.size() == ClaimConstant.NUMBER_INT_1)

7、对于lambda表达式里面的判断语句,UT测试用例也得考虑到所有的情况,才能保证整个测试用例的通过。例如表达式里面有filter语句,涉及到判断的地方都需要在入参中考虑到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值