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

时间:2018-08-16 04:00:37

标签: unit-testing powermock easymock matcher

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 您在使用EasyMock时正在使用Mockito的匹配器(Mockito.any())。无法工作
  2. 在期望中使用匹配器后,就需要对所有参数使用一个。

您的期望应该是这样的:

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