2015-03-12 5 views
6

मुझे निम्न त्रुटि मिल रही है जब मैं एक एंड्रॉइड ऐप पर जुनीट परीक्षण चलाता हूं जो apachehttp-client का उपयोग करता है। ऐप मेरे परीक्षण पर सफलतापूर्वक चलता है डिवाइस और एक एमुलेटर पर। एक लॉगिन जुनीट टेस्ट भी पास हो जाता है लेकिन जब भी ऐप सर्वर से डेटा पढ़ने के लिए apachehttp-client का उपयोग करने का प्रयास करता है तो शेष JUnit परीक्षण विफल हो जाते हैं।JUnit UnsatisfiedLinkError: android.util.Log.isLoggable (Ljava/lang/String;

परीक्षण httpClient.execute पर विफल होने लगता है

try { 
     URL businessPartnersResource = new URL(
       session.getServer().getUrl(), "BusinessPartners"); 

     HttpGet request = new HttpGet(businessPartnersResource.toURI()); 
     session.attachToRequest(request); 

     HttpClient httpClient = HttpClientFactory.getClient(); 
     HttpResponse response = httpClient.execute(request); 

     int status = response.getStatusLine().getStatusCode(); 

     switch (status) { 
     case HttpsURLConnection.HTTP_OK: { 

यहाँ विफलता ट्रेस

java.lang.UnsatisfiedLinkError: android.util.Log.isLoggable(Ljava/lang/String;I)Z 
at android.util.Log.isLoggable(Native Method) 
at org.apache.http.client.protocol.RequestClientConnControl.process(RequestClientConnControl.java:76) 
at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:251) 
at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:168) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:458) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) 
है

उत्तर

6

निराशाजनक पर पाया जा सकता है, लेकिन आपको मानक जुनीट के बजाय RobolectricTestRunner का उपयोग करना होगा।

isLoggable एक मूल विधि है, इसलिए यह रनटाइम पर उपलब्ध नहीं है। कि इस विधि बस है

private static final DEBUG = Log.isLoggable(..);

जो पूरी तरह से चीजों को देखते हुए को खराब करता:

आप वॉली या apachehttp-क्लाइंट का उपयोग करते हैं, तो सबसे बड़ी समस्या है कि isLoggable एक क्षेत्र इन्स्टेन्शियशन के रूप में कहा जाता है, उदाहरण के लिए रनटाइम पर उन लाइब्रेरी के भीतर बिल्कुल उपलब्ध नहीं है, इसलिए AndroidTestCase भी आपको सहेज नहीं सकता है।

सौभाग्य से, रोबलेक्ट्रिक इसे पूरी तरह से संभालता है।

संपादित अप्रैल 4, 2017

JUnit 5 अब उपलब्ध है और मैं इस testrunner साथ परीक्षण नहीं किया।

-3

एंड्रॉइड प्रोजेक्ट्स पर जुनीट परीक्षण चला रहा है।

एंड्रॉइड में जूनिट टेस्ट चलाने के दौरान एकमात्र अंतर यह है कि आप जैनिट टेस्ट की बजाय रन एएस एंड्रॉइड जुनीट टेस्ट को कॉल करेंगे जैसे कि आप जावा में उपयोग किए जाते हैं।

यह सब कुछ है! उम्मीद है आप इसे पसंद करते हैं!

1

मुझे एक ही समस्या थी, अपने टेस्ट क्लास में एंड्रॉइडटेस्टकेस को विस्तारित करने का प्रयास करें। त्रुटि कक्षाओं के कारण है जो केवल एंड्रॉइड रनटाइम (डिवाइस \ एमुलेटर)