EasyMock失败的测试用例“无效使用参数匹配器! 2匹配预期,1记录“错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EasyMock失败的测试用例“无效使用参数匹配器! 2匹配预期,1记录“错误相关的知识,希望对你有一定的参考价值。

让我们将我们的测试文件命名为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);

我现在挠头几天但是找不到根本原因。我对这个嘲弄的东西很新。看起来我没有做任何与matcher相关的更改。我只是得到一个字符串并将该字符串添加到已存在的指标中。我的小改变看起来与此完全无关,但不知道为什么它已经开始失败测试用例。请帮我找理由。

答案

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

  1. 您在使用EasyMock时使用的是Mockito的匹配器(Mockito.any())。不行
  2. 只要您期望使用匹配器,就需要为所有参数使用一个匹配器。

你的期望应该是这样的:

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

以上是关于EasyMock失败的测试用例“无效使用参数匹配器! 2匹配预期,1记录“错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Spring + EasyMock做Java单元测试

Mockito 比 EasyMock 更受欢迎? [关闭]

Powermock(使用 Easymock)没有最后一次调用模拟可用

JSF - JUnit FacesContext模拟测试

使用 Powermock 时出现 NoClassDefFoundError

测试没有使用 EasyMock 调用 void 方法