今天在寫UT時遇到了下面的問題:
1. 使用的powermock來處理static方法;
2. 靜態方法里的卻有使用到org.apache.http.client(4.3.1)的方法
異常如下:
Caused by: org.apache.http.conn.ssl.SSLInitializationException: class configured for SSLContext: sun.security.ssl.SSLContextImpl$TLS10Context not a SSLContext at org.apache.http.conn.ssl.SSLContexts.createDefault(SSLContexts.java:58) at org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory(SSLSocketFactory.java:162) at com.taobao.tae.security.topscan.TaeTopScanClient.<clinit>(TaeTopScanClient.java:73) ... 37 more Caused by: java.security.NoSuchAlgorithmException: class configured for SSLContext: sun.security.ssl.SSLContextImpl$TLS10Context not a SSLContext at sun.security.jca.GetInstance.checkSuperClass(GetInstance.java:258) at sun.security.jca.GetInstance.getInstance(GetInstance.java:237) at sun.security.jca.GetInstance.getInstance(GetInstance.java:164) at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156) at org.apache.http.conn.ssl.SSLContexts.createDefault(SSLContexts.java:54) ... 39 more
google了一下,倒不是應為包版本或者不存在的問題,是powermock機制的問題。
解決方法:
在UTclass上增加annotation:
@PowerMockIgnore("javax.net.ssl.*")