本文共 1073 字,大约阅读时间需要 3 分钟。
解决verify
测试失败的问题,尤其是在使用了重写hashCode
和equals
方法后,现在按照以下步骤操作:
重写与修复hashCode
和equals
方法:确保在改动对象比较逻辑后,equals
和hashCode
能够正确地反映对象内容的相等性和唯一性。具体修改如下:
@Overridepublic boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof PurchaseInputOrderDTO)) return false; PurchaseInputOrderDTO other = (PurchaseInputOrderDTO) obj; return this.purchaseNumber != null ? this.purchaseNumber.equals(other.purchaseNumber) : thisambioUUID != null ? thisambioUUID.equals(other aylıkDni) : false;}@Overridepublic int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + (purchaseNumber == null ? 0 : prime * purchaseNumber.hashCode()); hashCode = prime * hashCode + (amigoUUID == null ? 0 : prime * amigoUUID.hashCode()); return hashCode;}
修改测试验证代码:将原本使用具体对象验证的语句,替换为使用参数不敏感的验证方法:
verify(wmsService, times(1)).createPurchaseInputOrder(any(PurchaseInputOrderDTO.class));
这样不论实际传递的PurchaseInputOrderDTO
对象是什么,验证都会通过,只关注方法被调用次数是否正确。
通过这样处理,测试不再依赖于具体的对象实例参数,而确认了WmsService
的createPurchaseInputOrder
方法恰好被调了一次,从而解决了比较失败的问题。
转载地址:http://ykeqz.baihongyu.com/