如何验证PowerMockito已打桩的内部调用静态方法是否被至少调用一次
PowerMockito验证静态方法调用次数实现方案
前置配置要求
首先确保你的测试类已经添加了以下两个必填注解,否则静态方法验证逻辑无法生效:
@RunWith(PowerMockRunner.class) @PrepareForTest(MyClass.class) public class MyClassTest { // 测试方法写在这里 }
验证逻辑实现
你只需要在MyClass.methodA()执行之后,添加如下验证代码即可:
// 验证MyClass的静态方法至少被调用1次 PowerMockito.verifyStatic(MyClass.class, Mockito.atLeastOnce()); // 标记要验证的目标方法,参数可以用Mockito的匹配器灵活匹配 MyClass.methodB(Mockito.anyInt(), Mockito.any(ArrayList.class));
完整测试用例示例
@Test public void testMethodA() { // 小提示:这里methodB第一个参数是int基本类型,建议把Integer.class替换为int.class避免类型匹配失败 PowerMockito.stub(PowerMockito.method(MyClass.class, "methodB", int.class, ArrayList.class)).toReturn(null); MyClass.methodA(); // 验证逻辑 PowerMockito.verifyStatic(MyClass.class, Mockito.atLeastOnce()); MyClass.methodB(Mockito.anyInt(), Mockito.any(ArrayList.class)); }
说明
- 如果需要验证固定调用次数,把
Mockito.atLeastOnce()替换为Mockito.times(期望次数)即可 - 如果你需要精确验证调用时传入的参数值,把参数匹配器
Mockito.anyInt()、Mockito.any(ArrayList.class)替换为你预期的具体参数值即可
内容的提问来源于stack exchange,提问作者Anurag
相关产品推荐
相关产品推荐

