gpt4 book ai didi

android - Mockito/Powermock:匹配器any()错误地不匹配(但是anyOrNull()匹配

转载 作者:行者123 更新时间:2023-12-02 13:44:51 27 4
gpt4 key购买 nike

我在用Kotlin编写的Android单元测试中使用Mockito / Powermock。
我有如下代码:

verify(myCompanionMock, atLeastOnce()).someMethod(any(), any())

但是我得到这个错误:
Comparison Failure: 
<Click to see difference>

Argument(s) are different! Wanted:
companion.someMethod(
<any java.io.File>,
<any java.io.File>
);
-> at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:182)
Actual invocation has different arguments:
companion.someMethod(
null,
null
);

因此,如果我将匹配器 any() 替换为 anyOrNull()
测试通过。我已介入调试器以验证是否将实际的File对象(不是模拟对象)传递给someMethod()。我还验证了静态Companion对象的模拟是否有效。 (所有其他测试均按预期运行)。

静态Companion类用Kotlin编写。被测类(称为Companion)是用Java编写的。正确设置了这些类的 @PrepareForTest -annotations(所有其他测试均按预期工作)

所以我想知道我是否错过了某些东西,或者这是我不知道的Mockito匹配器的问题?

最佳答案

这似乎是在PowerMock中使用参数匹配器的推荐方式:

// class containing static method
public class Companion {
public static void someMethod(File a, File b) { }
}

// test class
@RunWith(PowerMockRunner.class)
@PrepareForTest(Companion.class)
public class CompanionTest {

@Test
public void testCompanion() {

PowerMockito.mockStatic(Companion.class);

// call method with non-null arguments
Companion.someMethod(Mockito.mock(File.class), Mockito.mock(File.class));

// verify
PowerMockito.verifyStatic(Companion.class);
Companion.someMethod((File) ArgumentMatchers.notNull(),
(File) ArgumentMatchers.notNull());
}
}

使用JUnit 4,Mockito 2.28.2和PowerMock 2.0.2对我有用。

关于android - Mockito/Powermock:匹配器any()错误地不匹配(但是anyOrNull()匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com