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

问题描述 投票:0回答: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相关的更改。我只是得到一个字符串并将该字符串添加到已存在的指标中。我的小改变看起来与此完全无关,但不知道为什么它已经开始失败测试用例。请帮我找理由。

unit-testing powermock easymock matcher
1个回答
0
投票

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

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

你的期望应该是这样的:

EasyMock.expect(SomeClass.someStaticMethod(EasyMock.any(Map.class), EasyMock.eq(SomeOtherClassObject))).andReturn(false);
© www.soinside.com 2019 - 2024. All rights reserved.