2016-03-23 7 views
9

मैं कुछ डिब्बाबंद नेटवर्क respones बनाने की कोशिश कर रहा हूँ। मेरे पास वास्तविक अनुरोध के लिए जेसन प्रतिक्रिया है और मेरे पास रीट्रोफिट इंटरफेस हैं जो प्रतिक्रियाओं को क्रमबद्ध करते हैं। मैं इसे स्थापित करने की कोशिश कर निराश से परे हूँ। मुझे यहाँ क्या करना चाहिए? ऐसा लगता है कि मेरे विकल्प हैं, 1) एक मॉकवेब सर्वर() 2 का उपयोग करें) एक RequestInterceptor() का उपयोग करें।mockito में OkHttpClient बनाते समय java.lang.AssertionError को हल करने के लिए कैसे करें?

या तो 1 या 2 का उपयोग करने की कोशिश करते समय, मैं अपने जीवन के लिए एक ओकेएचटीपी क्लाइंट() को विफल होने के बिना तत्काल नहीं कर सकता, मूल रूप से यह हर चीज को तुरंत मारने की कोशिश करता है। मुझे java.lang.AssertionError मिलता है क्योंकि OkHttpClient इसे फेंक रहा है जब इसे एक टीएलएस एल्गोरिदम नहीं मिल रहा है।

if (builder.sslSocketFactory != null || !isTLS) { 
     this.sslSocketFactory = builder.sslSocketFactory; 
    } else { 
     try { 
     SSLContext sslContext = SSLContext.getInstance("TLS"); 
     sslContext.init(null, null, null); 
     this.sslSocketFactory = sslContext.getSocketFactory(); 
     } catch (GeneralSecurityException e) { 
     **throw new AssertionError(); // The system has no TLS. Just give up.** 
     } 
    } 

मैं android.jar unMock का उपयोग करने में "javax.net.ssl" वर्ग बनाने का प्रयास किया, लेकिन वह त्रुटि को हल नहीं किया।

unMock { 
    // URI to download the android-all.jar from. e.g. https://oss.sonatype.org/content/groups/public/org/robolectric/android-all/ 
    downloadFrom 'https://oss.sonatype.org/content/groups/public/org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar' 

    keep "android.util.Log" 
    keep "javax.net.ssl" 
} 

तो बुनियादी तौर पर, मैं कैसे पुराना वापस 2 के साथ नेटवर्क अनुरोधों उपहास करने के लिए के विभिन्न उदाहरण का सामना करना पड़ा है, लेकिन मैं इस बाधा को पार नहीं कर सकते हैं, और मैं बहुत पराजित महसूस कर रहा हूँ। मैंने इस समस्या के साथ किसी और को नहीं देखा है, और मैं इस बात से परेशान हूं कि कैसे सभी अपने सभी परीक्षणों में नए OkHttpClients को आसानी से चालू कर रहे हैं।

यहां प्रासंगिक निर्भरताएं हैं जिनका मैं उपयोग कर रहा हूं।

testCompile 'junit:junit:4.12' 
    testCompile 'org.mockito:mockito-all:1.10.19' 
    testCompile 'org.powermock:powermock-mockito-release-full:1.6.4' 
    testCompile 'org.powermock:powermock-module-junit4:1.6.4' 
    testCompile 'org.easymock:easymock:3.4' 
    testCompile 'org.powermock:powermock-api-easymock:1.6.4' 
    testCompile 'com.squareup.okhttp3:mockwebserver:3.2.0' 

    compile 'com.squareup.retrofit2:retrofit:2.0.0' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.0' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1' 
    compile 'com.google.code.gson:gson:2.4' 

उत्तर

39

आपको कक्षा के शीर्ष पर इस एनोटेशन की आवश्यकता है। बेशक।

@PowerMockIgnore("javax.net.ssl.*") 
+0

मुझे नहीं पता कि दोनों आंतरिक रूप से कैसे जुड़े हैं लेकिन पॉवर्मॉक के साथ एक ही समस्या थी और यह तय किया गया। – jett

+0

@jett खुश है यह मदद कर सकता है! यह समाधान ढूंढना वाकई मुश्किल था :( –

+2

धन्यवाद! यह मेरे लिए भी काम करता है। क्या आप समझा सकते हैं कि क्यों? यह ओखेट के साथ एक बग है या ..? – feresr

संबंधित मुद्दे