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相关的更改。我只是得到一个字符串并将该字符串添加到已存在的指标中。我的小改变看起来与此完全无关,但不知道为什么它已经开始失败测试用例。请帮我找理由。
答案
这两点应该可以解决您的问题。
- 您在使用EasyMock时使用的是Mockito的匹配器(
Mockito.any()
)。不行 - 只要您期望使用匹配器,就需要为所有参数使用一个匹配器。
你的期望应该是这样的:
EasyMock.expect(SomeClass.someStaticMethod(EasyMock.any(Map.class), EasyMock.eq(SomeOtherClassObject))).andReturn(false);
以上是关于EasyMock失败的测试用例“无效使用参数匹配器! 2匹配预期,1记录“错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Spring + EasyMock做Java单元测试
Powermock(使用 Easymock)没有最后一次调用模拟可用