这篇文章主要介绍如何使用PowerMock来Mock静态函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务栾川,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
EasyMock和Mockito等框架,对static, final, private方法均是不能mock的。 这些框架普遍是通过创建Proxy的方式来实现的mock。 而PowerMock是使用CGLib来操纵字节码而实现的mock,所以它能实现对上面方法的mock。今天先来看一个简单的例子吧:
***个注解是指定Runner
第二个是你要测试的类,这个里面调用了静态类
下面我结合EasyMock给一个简单的例子:
Java代码
import java.io.IOException; public class SystemPropertyMockDemo { public String getSystemProperty() throws IOException { return System.getProperty("property"); } }
Java代码
import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.easymock.PowerMock; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest({SystemPropertyMockDemo.class}) public class SystemPropertyMockDemoTest { @Test public void demoOfFinalSystemClassMocking() throws Exception { PowerMock.mockStatic(System.class); EasyMock.expect(System.getProperty("property")).andReturn("my property"); PowerMock.replayAll(); Assert.assertEquals("my property", new SystemPropertyMockDemo().getSystemProperty()); PowerMock.verifyAll(); } }
测试用例里面增加了PrepareForTest注解,表明要测试的类,里面包含静态方法的调用。
然后在测试类里面指定要测试的静态类和它的方法。
实际上PowerMock是在EasyMock上面做了扩展,这些写法都是和EasyMock相同的。
今天先写这么一个简单的例子,然后以后会将用到的都写上来。
当然了,更多的可以参考:
http://code.google.com/p/powermock/
另外它的maven依赖如下,我在使用的时候就弄错了
Xml代码
<dependency> <groupId>org.powermockgroupId> <artifactId>powermock-module-junit4artifactId> <version>1.4.8version> <scope>testscope> dependency> <dependency> <groupId>org.powermockgroupId> <artifactId>powermock-api-easymockartifactId> <version>1.4.8version> <scope>testscope> dependency>
以上是“如何使用PowerMock来Mock静态函数”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章名称:如何使用PowerMock来Mock静态函数
文章分享:https://www.cdcxhl.com/article0/pdceio.html
成都网站建设公司_创新互联,为您提供小程序开发、网站设计、品牌网站制作、App开发、Google、网站改版
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联