首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassCastException将断开从URLConnection转换的HttpURLConnection与PowerMockito的连接

ClassCastException将断开从URLConnection转换的HttpURLConnection与PowerMockito的连接
EN

Stack Overflow用户
提问于 2018-07-03 16:09:56
回答 1查看 211关注 0票数 4

我的连接在以下情况下工作正常:

代码语言:javascript
复制
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})做了个测试

代码语言:javascript
复制
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()方法关闭连接。这在代码中工作得很好:

代码语言:javascript
复制
HttpURLConnection conn = (HttpURLConnection) urc;
conn.disconnect();

但在测试中不能被强制转换:

代码语言:javascript
复制
java.lang.ClassCastException: $java.net.URLConnection$$EnhancerByMockitoWithCGLIB$$6fcf4cc9 cannot be cast to java.net.HttpURLConnection

我如何支持在测试中使用cast来断开与PowerMockito的连接?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 16:19:35

未经过测试,而不是:

代码语言:javascript
复制
URLConnection urc = PowerMockito.mock(URLConnection.class);

使用:

代码语言:javascript
复制
URLConnection urc = PowerMockito.mock(HttpURLConnection.class);

否则,您的模拟类的类型就是错误的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51149603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档