我的连接在以下情况下工作正常:
URLConnectionFactory hadoopConnectionFactory = URLConnectionFactory.newDefaultURLConnectionFactory(cfg);
String url = "...";
URLConnection urc = hadoopConnectionFactory.openConnection(new URL(url));
urc.connect();
// Do something with urc.getInputStream()我用@RunWith(PowerMockRunner.class)和@PrepareForTest({URLConnectionFactory.class})做了个测试
PowerMockito.mockStatic(URLConnectionFactory.class);
URLConnectionFactory hadoopConnectionFactory = PowerMockito.mock(URLConnectionFactory.class);
PowerMockito.when(URLConnectionFactory.newDefaultURLConnectionFactory(anyObject())).thenReturn(hadoopConnectionFactory);
URLConnection urc = PowerMockito.mock(URLConnection.class);
PowerMockito.when(hadoopConnectionFactory.openConnection(anyObject())).thenReturn(urc);
PowerMockito.when(urc.getInputStream()).thenReturn(...);使用OK。
现在,我想用HttpURLConnection和disconnect()方法关闭连接。这在代码中工作得很好:
HttpURLConnection conn = (HttpURLConnection) urc;
conn.disconnect();但在测试中不能被强制转换:
java.lang.ClassCastException: $java.net.URLConnection$$EnhancerByMockitoWithCGLIB$$6fcf4cc9 cannot be cast to java.net.HttpURLConnection我如何支持在测试中使用cast来断开与PowerMockito的连接?
谢谢。
发布于 2018-07-03 16:19:35
未经过测试,而不是:
URLConnection urc = PowerMockito.mock(URLConnection.class);使用:
URLConnection urc = PowerMockito.mock(HttpURLConnection.class);否则,您的模拟类的类型就是错误的。
https://stackoverflow.com/questions/51149603
复制相似问题