栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaPowerMockito模拟单个静态方法和返回对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaPowerMockito模拟单个静态方法和返回对象

你想要做的是1的一部分和2的全部的组合。

你需要使用PowerMockito.mockStatic为类的所有静态方法启用静态模拟。这意味着可以使用when-thenReturn语法对它们进行存根。

但是,当你调用尚未在模拟实例上显式存根的方法时,你正在使用的2个参数的mathStatic重载为Mockito / PowerMock应该执行的操作提供了默认策略。

从javadoc:

创建具有指定策略的类模拟,以解决交互问题。这是一个非常高级的功能,通常你不需要它来编写不错的测试。但是,在使用旧系统时可能会有所帮助。这是默认答案,因此仅当你不存根方法调用时才会使用它。

该默认默认磕碰的策略是只返回NULL,0或假的对象,数量和布尔值的方法。通过使用2-arg重载,你说的是“不,不,不,默认情况下,使用此Answer子类的answer方法获取默认值。它返回Long,因此,如果你有静态方法返回的值与长期存在问题。

而是使用模拟静态的1-arg版本启用静态方法的存根,然后使用when-thenReturn指定对特定方法执行的操作。例如:

import static org.mockito.Mockito.*;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.invocation.InvocationOnMock;import org.mockito.stubbing.Answer;import org.powermock.api.mockito.PowerMockito;import org.powermock.core.classloader.annotations.PrepareForTest;import org.powermock.modules.junit4.PowerMockRunner;class ClassWithStatics {  public static String getString() {    return "String";  }  public static int getInt() {    return 1;  }}@RunWith(PowerMockRunner.class)@PrepareForTest(ClassWithStatics.class)public class StubJustoneStatic {  @Test  public void test() {    PowerMockito.mockStatic(ClassWithStatics.class);    when(ClassWithStatics.getString()).thenReturn("Hello!");    System.out.println("String: " + ClassWithStatics.getString());    System.out.println("Int: " + ClassWithStatics.getInt());  }}

字符串型静态方法被存根以返回“ Hello!”,而整数型静态方法使用缺省的存根,返回0。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号