2011-11-23 12 views
5

मुझे एंड्रॉइड पर स्कैला के मुद्दों के कारण हाल ही में एंड्रॉइड पर प्रोगार्ड पेश करने की आवश्यकता है। मुझे प्रोगूर्ड की अपनी घटती विशेषता के लिए आवश्यकता है, जो अप्रयुक्त होने के लिए मानी जाने वाली कक्षाओं को हटा देता है। मैं टेस्टेबिलिटी पर कक्षाओं को हटाने के प्रभाव के बारे में बहुत चिंतित हूं।ProGuard के साथ, परीक्षण रणनीति पर असर क्या है?

यह खड़ा के रूप में, मैं मेजबान और स्वीकृति परीक्षण है कि एंड्रॉयड प्लेटफॉर्म पर पूरी तरह से एकीकृत एप्लिकेशन को चलाने पर चलने वाले इकाई परीक्षण लिखें।

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

इस ओर जाता है मुझे विश्वास है कि मैं स्वीकृति/मंच परीक्षण है कि क्योंकि किसी भी बिंदु पर पूर्ण कवरेज को प्राप्त लिखने की ज़रूरत है, वहाँ एक लापता वर्ग हो सकता है।

क्या दूसरों को यह अनुभव है? यदि हां, तो आपकी परीक्षण रणनीति क्या रही है? या अनुभव के साथ, क्या आप अधिक आत्मविश्वास बन जाते हैं कि ProGuard को हटा रहे वर्ग वास्तव में अनियंत्रित हैं?

उत्तर

2

ProGuard आपके आवेदन को तोड़ने नहीं होगा जब तक यह हटा वर्गों और/या अस्पष्ट सदस्यों पर प्रतिबिंब या क्लास # forName उपयोग करने के लिए प्रयास करता है।

मेरे अनुभव से (एंड्रॉयड पर सुलझा स्काला के साथ भी) यह वास्तव में अपने Android सरल धुआं परीक्षण का उपयोग कर आवेदन करने के लिए ProGuard की वजह से समस्याओं का पता करने के लिए आसान है। आप जानते हैं कि आप अपनी परियोजना में क्या पुस्तकालय शामिल करते हैं। अगर उनमें से कुछ प्रतिबिंब या कक्षा # नाम के लिए उपयोग करते हैं - उन पर धूम्रपान परीक्षण करें। फिर ProGuard कॉन्फ़िगरेशन से आवश्यक कक्षाओं/सदस्यों को बाहर निकालें।

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

निष्कर्ष में - डर नहीं। प्रोगार्ड से संबंधित समस्याएं सापेक्षता को स्थान के लिए आसान बनाती हैं।

+0

यह आमतौर पर trued है, लेकिन फेसबुक एंड्रॉइड एसडीके और इस तरह की चीजें जैसे क्रैपी पुस्तकालयों का उपयोग करते समय अजीब असंगतता से सावधान रहें। यह आम तौर पर चीजों को तोड़ देता है। –

2

हम दोनों इकाई परीक्षण किया गया है और "पूरी तरह से" अब काफी देर के लिए हमारे ProGuard एड आवेदन का परीक्षण, और हम कोई 'असली' समस्याओं था। हमारे द्वारा चलाए जाने वाले एकमात्र मुद्दे तब होते हैं जब हम अपने परीक्षणों में कुछ लाइब्रेरी विधियों का उपयोग करते हैं जिनका उपयोग मुख्य अनुप्रयोग में नहीं किया जाता है; इन मामलों में ProGuard पुस्तकालयों से कोड हटा देगा और हमें proguard.cfg पर मैन्युअल रूप से विशिष्ट विधियों को जोड़ना होगा।

ओह, और हम भी Guice :) का उपयोग

+0

जो मैंने देखा है, उससे कई रोबोगुइस ग्राहक स्पष्ट रूप से गुइस का उपयोग नहीं करते हैं। क्या आप मुख्य रूप से रोबोगुइस के एंड्रॉइड संसाधन इंजेक्शन का उपयोग कर रहे हैं, या आप एक गैर-तुच्छ गुइस मॉड्यूल के साथ व्यापक बाइंडिंग कर रहे हैं? –

+1

हम गैर-रोबोटुइस सामान के इंजेक्शन का थोड़ा सा करते हैं। मुझे यकीन नहीं है कि क्या वह "व्यापक बाइंडिंग" और "गैर-तुच्छ" के रूप में योग्य होगा। मेरा समग्र प्रभाव यह है कि आपको वास्तव में चिंतित नहीं होना चाहिए, ProGuard यह अपनी नौकरी बहुत अच्छी तरह से करता है। – dmon

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