2012-08-27 19 views
6

बनाता है जो क्लास का मज़ाक करने में असमर्थ है (PowerMock की createMock विधि का उपयोग करके)। यह वर्ग अपने कन्स्ट्रक्टर में ThreadSafeClientConnManager क्लास का ऑब्जेक्ट बना रही है। मुझे उस लाइन पर अपवाद मिलता है जहां मैंने अपनी कक्षा नाम पास करने वाले createMock विधि को बुलाया। अपवाद स्टैक ट्रेस निम्नलिखित है। अगर मैं एकीकरण परीक्षण चलाता हूं तो यह ठीक काम कर रहा है। मामला क्या हो सकता है ?थ्रेडसेफ क्लाइंट कॉनमैनगर ऑब्जेक्ट

[junit] Caused by: java.lang.IllegalStateException: Failure initializing default SSL context 
[junit]  at org.apache.http.conn.ssl.SSLSocketFactory.createDefaultSSLContext(SSLSocketFactory.java:211) 
[junit]  at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:333) 
[junit]  at org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory(SSLSocketFactory.java:165) 
[junit]  at org.apache.http.impl.conn.SchemeRegistryFactory.createDefault(SchemeRegistryFactory.java:45) 
[junit]  at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:98) 
[junit]  at com.amazon.marketplace.payment.tsf.TSFClient.<init>(TSFClient.java:109) 
[junit]  at com.amazon.marketplace.payment.tsf.TSFClient.<clinit>(TSFClient.java:95) 
[junit] Caused by: java.security.NoSuchAlgorithmException: class configured for KeyManagerFactory: com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509 not a KeyManagerFactory 
[junit]  at sun.security.jca.GetInstance.checkSuperClass(GetInstance.java:242) 
[junit]  at sun.security.jca.GetInstance.getInstance(GetInstance.java:221) 
[junit]  at sun.security.jca.GetInstance.getInstance(GetInstance.java:147) 
[junit]  at javax.net.ssl.KeyManagerFactory.getInstance(KeyManagerFactory.java:121) 
[junit]  at org.apache.http.conn.ssl.SSLSocketFactory.createSSLContext(SSLSocketFactory.java:184) 
[junit]  at org.apache.http.conn.ssl.SSLSocketFactory.createDefaultSSLContext(SSLSocketFactory.java:209) 

उत्तर

2

क्या आपको लगता है कि यह एक सिस्टम क्लास लोडिंग समस्या है? इस लिंक का जिक्र करने का प्रयास करें, यह आपको कुछ पॉइंटर्स दे सकता है। http://code.google.com/p/powermock/wiki/MockSystem

2

क्या आप वाकई अपने कन्स्ट्रक्टर में थ्रेडसेफ क्लाइंट कॉनमैनगर बना रहे हैं? क्या यह इसके बजाय एक स्थिर प्रारंभकर्ता में कर सकता है? अगर ऐसी बात है, तो आप उस, अपने परीक्षण कक्षा में "वर्ग" परिभाषा से पहले निम्न दो एनोटेशन जोड़कर आसपास मिल सकता है जैसे:

@RunWith(PowerMockRunner.class) 
@PrepareForTest(ClassUnderTest.class) 
public class YourTestClass { 

नोट < clinit> माता पिता प्रारंभ में, के हिस्से का संकेत कक्षा की स्थिर प्रारंभिक प्रक्रिया।