让我们将测试文件命名为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);
我现在挠头了几天,但找不到根本原因。我对这个嘲笑的东西很陌生。看起来我没有进行与匹配器有关的任何更改。我只是得到一个字符串,并将该字符串添加到已经存在的指标中。我的小改动看起来与此完全无关,但是不知道为什么它开始使测试用例失败。 请帮助我找到原因。
答案 0 :(得分:0)
这两点应该可以解决您的问题。
Mockito.any()
)。无法工作您的期望应该是这样的:
EasyMock.expect(SomeClass.someStaticMethod(EasyMock.any(Map.class), EasyMock.eq(SomeOtherClassObject))).andReturn(false);