博客
关于我
问题解决41:单元测试 verify 使用的时候,验证一个函数执行了多少次,验证出现参数不一致情况
阅读量:669 次
发布时间:2019-03-16

本文共 1073 字,大约阅读时间需要 3 分钟。

解决verify测试失败的问题,尤其是在使用了重写hashCodeequals方法后,现在按照以下步骤操作:

  • 重写与修复hashCodeequals方法:确保在改动对象比较逻辑后,equalshashCode能够正确地反映对象内容的相等性和唯一性。具体修改如下:

    @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对象是什么,验证都会通过,只关注方法被调用次数是否正确。

  • 通过这样处理,测试不再依赖于具体的对象实例参数,而确认了WmsServicecreatePurchaseInputOrder方法恰好被调了一次,从而解决了比较失败的问题。

    转载地址:http://ykeqz.baihongyu.com/

    你可能感兴趣的文章
    基于8086交通灯系统仿真设计(微机原理设计资料)
    查看>>
    解读域名管理之:域名注册机构介绍
    查看>>
    找中位数
    查看>>
    这些运维发展方向及系统运维技能都不了解,怎么能吃透Linux??
    查看>>
    自动化测试——UI自动化测试的痛点
    查看>>
    如何将萌推商品主图、属性图、详情图批量保存到电脑的方法
    查看>>
    2021年N1叉车司机模拟考试及N1叉车司机考试软件
    查看>>
    【奇淫巧技】Java动态代理(JDK和cglib)
    查看>>
    2021-05-11 现代操作系统 《现代操作系统 第4版》第3章 内存管理——总结(分段,分页,段页)(转载)
    查看>>
    MP4修改元数据日志记录
    查看>>
    WebView使用
    查看>>
    【Stimulsoft Reports.Net教程】使用DesignerFx
    查看>>
    攻防世界 Pwn 新手
    查看>>
    mybtis-plus 出现 Wrong namespace
    查看>>
    2008年7月20日星期日
    查看>>
    c#启动本机程序
    查看>>
    用户登陆的验证码的制作
    查看>>
    判断远程文件是否存在
    查看>>
    升级java11后,maven命令打包报错
    查看>>
    springboot redis key乱码
    查看>>