.Net单元测试业务实践

提交使用邀请码的订单,占用邀请码使用次数。
在允许取消次数内取消订单,退回邀请码使用次数。
超过允许取消次数取消订单,不退回邀请码使用次数。

注意点:临界值。

原核心代码(X.1版) public ResponseMessage<bool> 示例方法_ProcessCode(X used,YY invitecodedto) { var isoverinvite = false;//已经超过取消次数 var iswilloverinvite = false;//将要超出取消次数 long inviteNum = 0;//本次邀约使用次数 //判断是否已经超过取消次数,或者将要超出取消次数。 if (invitecodedto != null && invitecodedto.IsLimitCancelUse) { if (invitecodedto.CancelUsedCount > invitecodedto.CancelUseMaxNumber) { isoverinvite = true; } else if (invitecodedto.CancelUsedCount + used.InviteNum > invitecodedto.CancelUseMaxNumber) { iswilloverinvite = true; } } ResponseMessage<long> inviteuseres = null; //邀约码不为null,递增取消次数,扣减使用次数。 if (invitecodedto != null) { //递增已取消次数 var cancelcount = _codeService.IncCancelUseCount(invitecodedto.Id, (int)used.InviteNum); if (isoverinvite) { } else if (iswilloverinvite) { inviteNum = invitecodedto.CancelUseMaxNumber > cancelcount.Body ? invitecodedto.CancelUseMaxNumber - cancelcount.Body : cancelcount.Body - invitecodedto.CancelUseMaxNumber; //将要超出的,只退出部分。 inviteuseres = _codeService.IncUseCount(invitecodedto.Id, -(int)(inviteNum)); } else { inviteNum = used.InviteNum; //未超出取消次数的,全数退回。 inviteuseres = _codeService.IncUseCount(invitecodedto.Id, -(int)inviteNum); } } . . . //更新取消日志。 //更新码相关的各种状态。 } X.1版代码引起问题

使用次数为1,允许取消次数为1时,运行正确。

使用次数为1,允许取消次数为2时,结果错误。

>>测试流程目标:【每次报名都为1人】报名一次,取消一次,再报名一次,再取消一次后。再报名一次后,后续不能再报名。 >>实际效果:仍然还能报名一次。 >>原因分析:订单第二次取消后。已取消次数为2,允许取消次数为2,这个判断无法命中。 if (invitecodedto.CancelUsedCount > invitecodedto.CancelUseMaxNumber) { isoverinvite = true; }

优化后代码(X.2版) var isoverinvite = false;//已经超过取消次数 var iswilloverinvite = false;//将要超出取消次数 long inviteNum = 0;//本次邀约使用次数 if (invitecodedto != null && invitecodedto.IsLimitCancelUse) { //这里多加了个=号 if (invitecodedto.CancelUsedCount >= invitecodedto.CancelUseMaxNumber) { isoverinvite = true; }//这里也多加了个=号 else if (invitecodedto.CancelUsedCount + used.InviteNum >= invitecodedto.CancelUseMaxNumber) { iswilloverinvite = true; } } X.2版代码引起问题

X.2版修复了上个问题。但仍有场景覆盖不够。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpssyg.html