【问题标题】:EasyMock failing test case with "Invalid use of argument matchers! 2 matchers expected, 1 recorded" errorEasyMock 失败的测试用例,“参数匹配器的使用无效!预期 2 个匹配器,1 个记录”错误
【发布时间】:2018-08-16 04:00:37
【问题描述】:

让我们将测试文件命名为 ExecutorTest.java。在这个文件中,我们有一个单元测试用例,它像这样使用 EasyMock 模拟静态方法 -

Executor exectorInstance;
PowerMock.mockStaticPartial(SomeClass.class, "someStaticMethod", Map.class, SomeOtherClass.class);
EasyMock.expect(SomeClass.someStaticMethod(Mockito.any(Map.class), SomeOtherClassObject)).andReturn(false);
PowerMock.replayAll();
exectorInstance.execute();

Executor.java -

public void execute() {
    String clientName = someObject.getInformation(); //using this string while logging the metric
    logMetric(className + clientName);
    if(SomeClass.someStaticMethod(someMapObject, someOtherClassObject){
        // some code
    }

}

我只在我的代码中添加了这一行,之后该单元测试用例开始失败并出现错误:“无效使用参数匹配器!预期 2 个匹配器,记录 1 个”错误”

String someInformation = someObject.getInformation();

我得到了这个字符串并将该字符串添加到我们已经记录的指标中。 已经开始抛出错误的行是这样的:

PowerMock.mockStaticPartial(SomeClass.class, "myStaticMethod", Map.class, SomeOtherClass.class);

我现在摸不着头脑,但无法找到根本原因。我对这种嘲弄的东西很陌生。看起来我没有对匹配器进行任何更改。我只是得到一个字符串并将该字符串添加到已经存在的指标中。我的小改动看起来与此完全无关,但不知道为什么它开始使测试用例失败。 请帮我找出原因。

【问题讨论】:

    标签: unit-testing powermock easymock matcher


    【解决方案1】:

    这两点应该可以解决你的问题。

    1. 您在使用 EasyMock 时正在使用 Mockito 的匹配器 (Mockito.any())。行不通
    2. 在期望中使用匹配器后,您需要为所有参数使用匹配器。

    你的期望应该是这样的:

    EasyMock.expect(SomeClass.someStaticMethod(EasyMock.any(Map.class), EasyMock.eq(SomeOtherClassObject))).andReturn(false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2020-03-23
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      相关资源
      最近更新 更多