2010-11-01 8 views
6

मैंबस संकलित करने के लिए एक एम्मा instrumented एंड्रॉयड build.xml का उपयोग करने और नहीं किसी भी परीक्षण चलाने

ant coverage 

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

Target_Project/build.properties

emma.enabled=true 

Test_Project/build.properties

emma.enabled=true 

फिर कोशिश की है।

Target_Project$ ant debug 
Target_Project$ adb install bin/Target_Project-debug.apk 
Target_Project$ cd ../Test_Project/ 
Test_Project$ ant debug 
Test_Project$ adb install bin/Test_Project-debug.apk 
Test_Project$ adb shell am instrument -e coverage true -e coverageFile /sdcard/myFile.ec -w com.my_app.testproject/android.test.InstrumentationTestRunner 

प्रतिक्रिया

Error: Failed to generate emma coverage. Is emma jar on classpath? 

तो वहाँ apk एम्मा libs के साथ निर्माण करने के लिए हो रही करने के लिए एक चाल है? मैंने एसडीके एक्सएमएल टेम्पलेट्स में बनाए गए लक्ष्यों का आह्वान करने की कोशिश की लेकिन वे "निजी" हैं। क्या मैं कुछ छोड़ रहा हूं?

उत्तर

3

किसी भी दिलचस्पी के लिए अच्छा है। एसडीके दस्तावेज पूरी तरह से बस्टेड है (आश्चर्यजनक मुझे पता है)। मूल रूप से आप ऐसा करने के लिए है,

एंड्रॉयड बनाने परियोजना द्वारा उत्पन्न आधार build.xml लेने के लिए और टैग को बदलने

<setup/> 

और

<setup import="false"/> 

के लिए इसे बदल अब प्रलेखन बता देंगे आप एसडीके/प्लेटफार्म-/टेम्पलेट्स/android_rules.xml से कॉपी करने के लिए और इसे अपने build.xml में रखें ... यह गलत है और बेहद अनजान। यह नियम फ़ाइल किसी भी चीज़ द्वारा उपयोग नहीं की जाती है। एसडीके/उपकरण/चींटी/के अंदर नियम क्या उपयोग किए जाते हैं। नवीनतम _r और
के साथ अपनी बिल्ड प्रोजेक्ट (लाइब्रेरी प्रोजेक्ट के लिए लाइब्रेरी, एक प्रोजेक्ट प्रोजेक्ट के लिए लाइब्रेरी, या एक रेगुलर प्रोजेक्ट के लिए वेनिला) के लिए उपयुक्त फ़ाइल को अपने build.xml में रूट रूट नोड की सामग्री कॉपी करें। सेटअप टैग के बाद इसे डालें। यदि आप चींटी निर्देशिका के अंदर फ़ाइलों का उपयोग नहीं करते हैं, तो आप एंटी स्क्रिप्ट के माध्यम से प्रोजेक्ट लाइब्रेरी को संकलित करने में सक्षम नहीं होंगे। मैं बहुत खुश था कि उन्होंने यह कैसे किया जाए इस पर दस्तावेज़ीकरण बनाए रखा।

अब आप अपनी बिल्ड आवश्यकताओं की पूर्ति के लिए बिल्ड फ़ाइल में जो कुछ भी पसंद करते हैं उसे बदल सकते हैं। इस मामले में मैंने अभी-एडीबी के आसपास अपना रैपर इंस्टॉल-हेल्पर कॉल किया है जो परिणामस्वरूप परिणाम का अर्थ देता है।

+0

सहायता के लिए धन्यवाद! – Justin

+0

मैं इस में आपकी निराशा को समझ सकता हूं :) हालांकि, मुझे लगता है कि आप टी नहीं हैं एंड्रॉइड टीम पर कड़ी मेहनत यदि आप अपनी build.xml फ़ाइल को 'एंड्रॉइड अपडेट प्रोजेक्ट' के माध्यम से पुनर्निर्माण करना चाहते थे। (जब आपकी प्रोजेक्ट में कोई build.xml फ़ाइल नहीं है), तो आप देखेंगे कि पुराना दस्तावेज जिसका आप उल्लेख कर रहे हैं वास्तव में संदर्भित किया गया है वर्तमान फाइलनामों के लिए। यदि आपने पुराने एसडीके संस्करण से अपना build.xml जेनरेट किया था, तो शायद यह पुरानी फाइलों का संदर्भ देगा जो बाद में बदल चुके हैं। 'एंड्रॉइड अपडेट प्रोजेक्ट' build.xml को संशोधित नहीं करेगा अगर इसे पुराना दस्तावेज नहीं है। – Joe

+1

उस समय यह प्रश्न लिखा गया था कि यह एंड्रॉइड अपडेट प्रोजेक्ट का परिणाम था :(इसलिए मेरी निराशा। मुझे इसे हाथ से अलग करना पड़ा। –

-1

// coverage.py

विकास \ testrunner \ coverage.py

डीईएफ़ TestDeviceCoverageSupport (एडीबी): "" "जांच करें कि डिवाइस कोड कवरेज मैट्रिक्स पैदा करने के लिए समर्थन हासिल है।

यह डिवाइस पर एम्मा सहायता जानकारी को डंप करने का प्रयास करता है, युक्त प्रतिक्रिया में मदद मिलेगी कि एम्मा पहले से ही सिस्टम क्लास पथ पर है।

रिटर्न: यदि डिवाइस कोड कवरेज का समर्थन कर सकता है तो सही है। अन्यथा झूठा। "" " कोशिश: उत्पादन = adb.SendShellCommand (" कार्यकारी app_process/एम्मा -h ")

if output.find('emma usage:') == 0: 
    return True 
errors.AbortError छोड़कर

: पास झूठी

adb shell exec app_process/eamm -h

निर्माण कोर छवि वापस http://duykham.blogspot.com/2009/09/how-to-get-emma-code-coverage-of.html

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

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