博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用PowerMock模拟静态方法
阅读量:6226 次
发布时间:2019-06-21

本文共 1106 字,大约阅读时间需要 3 分钟。

hot3.png

其实这类文章网上已经有很多了,包括模拟private方法等,我在这里只是简单记录我自己在使用过程中,编写的能够跑得通的例子。

以我自己编写调用REST API的接口为例:

首先在单元测试类类名上加上注解:

@RunWith(PowerMockRunner.class)public class MyStaticTest {//TODO}

// @PrepareForTest指定需要模拟的静态方法所在的类    @PrepareForTest( { Client.class })    @Test    public void testFailToCreateClient() {        TargetTestClass c = PowerMockito.spy(new TargetTestClass());        // 指定要mock哪个静态类        PowerMockito.mockStatic(Client.class);        Client client = PowerMockito.mock(Client.class);        PowerMockito.when(Client.create()).thenReturn(client);        PowerMockito.when(client.resource(Mockito.anyString())).thenThrow(            new RuntimeException("模拟建立服务器连接抛异常"));        try {            c.handlerProcess();            Assert.fail();        } catch (Exception e) {            e.printStackTrace();            Assert.assertTrue(e instanceof SocketRunTimeException);        }    }

以上代码是一个很简单的模拟静态方法的例子,有几个重点:

1、@PrepareForTest需要指定要模拟的静态方法所在的类(我原来一直这个地方没有写对,写成了TargetTestClass,导致我一直运行失败)

2、使用PowerMockito.mock(Client.class)再次指定要模拟哪个类

然后接下来的就和使用Mockito一样了

转载于:https://my.oschina.net/simpleton/blog/399434

你可能感兴趣的文章
1117 Eddington Number
查看>>
图片加载之AFNetwork(上)
查看>>
递归和尾递归
查看>>
MongoDB--副本集基本信息
查看>>
sublime text 3安装
查看>>
UIViewController的生命周期
查看>>
[jzoj 5230] 队伍统计(状压DP)
查看>>
第一套面试题
查看>>
10个流行的JavaScript面试题
查看>>
演好你的角色
查看>>
javascript高级
查看>>
iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
查看>>
[C#] String.Format格式说明
查看>>
SharePoint 2010 create 自定义 timejob-1
查看>>
libuv之文件监听---fs-poll.c
查看>>
MySQL-安装 启动 运行
查看>>
SSH on Mac OS
查看>>
asp.net 坑爹教材
查看>>
解析Mybatis源码解读-设计模式总结
查看>>
单行文本溢出、多文本溢出
查看>>