首页  

powermock 静态方法mock     所属分类 unit-test 浏览量 619
HttpClientUtil 静态方法 doGet mock 


import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class) 
@PrepareForTest({HttpClientUtil.class}) 
//@PowerMockIgnore({"javax.script.*", "javax.management.*", "org.w3c.dom.*", "org.apache.log4j.*", "org.xml.sax.*", "javax.xml.*"})
@PowerMockIgnore({"javax.net.ssl.*"})
public class HttpClientUtilMockTest {
	
	@Test
	public void doGetTest() throws Exception{	
		PowerMockito.mockStatic(HttpClientUtil.class);
		PowerMockito.when(HttpClientUtil.doGet(Mockito.anyString())).thenReturn("666"); 
		String url = "http://codefun007.xyz/pv.htm";
		String pv = HttpClientUtil.doGet(url);
        System.out.println(pv);       		
	}
}


注意 一定要加 @PowerMockIgnore({"javax.net.ssl.*"}) 默认使用自己的classLoader去loader所有的class,除 system class(java.lang等目录下的class), 使用 powermockIgnore 声明的class,pwoermock 不会加载 否则报错 Caused by: org.apache.http.ssl.SSLInitializationException: class configured for SSLContext: sun.security.ssl.SSLContextImpl$TLSContext not a SSLContext Caused by: java.security.NoSuchAlgorithmException: class configured for SSLContext: sun.security.ssl.SSLContextImpl$TLSContext not a SSLContext
完整代码 https://gitee.com/dyyx/hellocode/blob/master/demo/springboot1.5.4demo/src/test/java/dyyx/demo/util/HttpClientUtilMockTest.java

上一篇     下一篇
zookeeper单机安装

Spring ProxyFactory 和 方法拦截器 MethodInterceptor

Spring AOP @Aspect

mockito 实例

Mocktio 指南

Mockito mock 和 spy 区别