如何使用PowerMock来Mock静态函数

这篇文章主要介绍如何使用PowerMock来Mock静态函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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静态函数”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/209192.html

(0)
上一篇 2021年12月7日
下一篇 2021年12月7日

相关推荐

发表回复

登录后才能评论