微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不一致地获取“org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的无效使用”

如何解决不一致地获取“org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的无效使用”

一位开发人员编写了使用 mockito verify 的测试代码

verify(spyService,times(1)).register("ios",any());

有趣的是,这段代码在他们的本地机器和 jenkins 构建环境中执行得很好。代码投入生产。但是代码在我的本地失败了

Caused by: org.mockito.exceptions.misusing.InvalidUSEOfMatchersException: 
Invalid use of argument matchers!
4 matchers expected,1 recorded:
-> at com.tile.services.rest.service.insurance.InsuranceCoverageServiceTest.testNonPartnerTilesWithoutTosAcceptance(InsuranceCoverageServiceTest.java:163)

This exception may occur if matchers are combined with raw values:
    //incorrect:
    someMethod(anyObject(),"raw String");
When using matchers,all arguments have to be provided by matchers.
For example:
    //correct:
    someMethod(anyObject(),eq("String by matcher"));

For more info see javadoc for Matchers class.

鉴于该项目通过 gradle 结构良好,junit 版本在任何地方都是相同的。 您知道是什么导致了这种不一致吗?

解决方法

你已经用过这个了吗?

verify(spyService,times(1)).register(eq("ios"),any());

在您的行中,您使用了特定值 "ios" 和匹配器 any(),我们不能同时使用两者。 保持坚强

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。