模拟特定静态方法以返回对象
Mockito 和 PowerMock 为模拟静态方法提供强大的支持。然而,模拟单个静态方法并让它返回一个对象可能会很棘手。
避免不匹配和调用问题
当模拟返回一个对象的静态方法时对象,避免返回类型不匹配很重要。使用默认策略模拟所有静态方法(例如为对象值方法返回 null)可能会导致错误。
PowerMockito.mockStatic(Static.class, new Answer
启用静态模拟和目标特定方法
解决方案是将静态方法模拟和目标方法存根的概念结合起来。 PowerMockito.mockStatic 为类启用静态模拟,而 when-thenReturn 语法允许您存根特定方法。
PowerMockito.mockStatic(Static.class);
when(Static.m1(param1, param2) ).thenReturn(1000l);
此方法启用所有方法的静态模拟Static.class 的但不会覆盖默认的存根策略。通过使用when-thenReturn,您显式地存根m1方法以返回1000l。
考虑MockStatic重载
PowerMockito为mockStatic提供了两个重载。单参数重载 (mockStatic(Static.class)) 可以在没有默认策略的情况下启用静态模拟。双参数重载 (mockStatic(Static.class, Answer
根据您的具体测试场景,您可以选择使用这些超载。如果您只想模拟特定方法或为不同的方法调用设置多个返回值,则单参数重载更合适。
以上是如何使用 Mockito 和 PowerMock 在 Java 中模拟返回对象的特定静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!