2016-11-21 17 views
7

इस दस्तावेज़ के आधार पर - https://developer.android.com/studio/test/command-line.html#AMOptionsSyntax फ़ायरबेस लेब से कोड कवरेज परिणाम प्राप्त करना संभव है। फायरबेस-community.slack.com पर # टेस्ट-लैब में कुछ लोग इसे काम करने में सक्षम हैं लेकिन कुछ प्रयासों के बाद भी मैं दीवार पर टक्कर मार रहा हूं। जब कवरेज संख्या के लिए पूछने के लिए cmd लाइन gcloud लिए तर्क देना करने की कोशिश करएंड्रॉइड एस्प्रेसो परीक्षणों के लिए Google फ़ायरबेस से कोड कवरेज रिपोर्ट कैसे प्राप्त करें

मैं निम्नलिखित this guide द्वारा jacaco और एम्मा की एक संयुक्त कोड कवरेज रिपोर्ट प्राप्त करने में सक्षम हूँ तो वहाँ अपने स्थानीय सेटअप के साथ गलत है लेकिन समस्या पैदा करने वाले कुछ भी नहीं है और इसके बारे में बात करती है एम्मा कवरेज।

अनिवार्य रूप से, मैं instruments.results में यह मिलता है जब मैं स्थानीय स्तर पर

gcloud beta test android run \ 
    --type instrumentation \ 
    --app app/build/outputs/apk/*-debug-unaligned.apk \ 
    --test app/build/outputs/apk/*-debug-androidTest-unaligned.apk \ 
    --device-ids Nexus6\ 
    --os-version-ids 22 \ 
    --locales en \ 
    --orientations portrait \ 
    --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" \ 
--directories-to-pull=/sdcard 

मैं उम्मीद कर रहा हूँ कवरेज रिपोर्ट उत्पन्न किया जा करने के लिए इस आदेश चला लेकिन फाइल

INSTRUMENTATION_STATUS: numtests=1 
INSTRUMENTATION_STATUS: stream= 
com.godaddy.gdm.telephony.uitests.DialerTabTest: 
INSTRUMENTATION_STATUS: id=AndroidJUnitRunner 
INSTRUMENTATION_STATUS: test=dialerTabNumberFormattingTest 
INSTRUMENTATION_STATUS: current=1 
INSTRUMENTATION_STATUS_CODE: 1 
INSTRUMENTATION_STATUS: numtests=1 
INSTRUMENTATION_STATUS: stream=. 
INSTRUMENTATION_STATUS: id=AndroidJUnitRunner 
INSTRUMENTATION_STATUS: test=dialerTabNumberFormattingTest 
INSTRUMENTATION_STATUS: current=1 
INSTRUMENTATION_STATUS_CODE: 0 
INSTRUMENTATION_RESULT: stream= 

Time: 6.022 

OK (1 test) 


Error: **Failed to generate emma coverage.** 
INSTRUMENTATION_CODE: -1 

और logcat इस कहते हैं:

11-18 21:38:39.400: I/TestRunner(5246): run finished: 1 tests, 0 failed, 0 ignored 
11-18 21:38:39.400: I/TestRunner(5246): [ 11-18 21:38:39.400 5246: 5263 E/   ] 
11-18 21:38:39.400: I/TestRunner(5246): Failed to generate emma coverage. 
11-18 21:38:39.400: I/TestRunner(5246): java.lang.reflect.InvocationTargetException 
11-18 21:38:39.400: I/TestRunner(5246): at java.lang.reflect.Method.invoke(Native Method) 
11-18 21:38:39.400: I/TestRunner(5246): at java.lang.reflect.Method.invoke(Method.java:372) 
11-18 21:38:39.400: I/TestRunner(5246): at android.support.test.internal.runner.listener.CoverageListener.generateCoverageReport(CoverageListener.java:80) 
11-18 21:38:39.400: I/TestRunner(5246): at android.support.test.internal.runner.listener.CoverageListener.instrumentationRunFinished(CoverageListener.java:68) 
11-18 21:38:39.400: I/TestRunner(5246): at android.support.test.internal.runner.TestExecutor.reportRunEnded(TestExecutor.java:94) 
11-18 21:38:39.400: I/TestRunner(5246): at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:69) 
11-18 21:38:39.400: I/TestRunner(5246): at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262) 
11-18 21:38:39.400: I/TestRunner(5246): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1853) 
11-18 21:38:39.400: I/TestRunner(5246): Caused by: java.io.FileNotFoundException: /sdcard/coverage.ec: open failed: EACCES (Permission denied) 
11-18 21:38:39.400: I/TestRunner(5246): at libcore.io.IoBridge.open(IoBridge.java:456) 
11-18 21:38:39.400: I/TestRunner(5246): at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
11-18 21:38:39.400: I/TestRunner(5246): at com.vladium.emma.rt.RT.dumpCoverageData(RT.java:50) 
11-18 21:38:39.400: I/TestRunner(5246): ... 8 more 
11-18 21:38:39.400: I/TestRunner(5246): Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 
11-18 21:38:39.400: I/TestRunner(5246): at libcore.io.Posix.open(Native Method) 
11-18 21:38:39.400: I/TestRunner(5246): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
11-18 21:38:39.400: I/TestRunner(5246): at libcore.io.IoBridge.open(IoBridge.java:442) 
11-18 21:38:39.400: I/TestRunner(5246): ... 10 more 

मैं अधिक जानकारी अगर जरूरत दे सकते हैं।

+0

कैसे क्या आपको अपनी स्थानीय मशीन पर कोड कवरेज फ़ाइल मिलती है? – spierce7

+0

यह आम तौर पर ऐप/बिल्ड/आउटपुट/ /jacoco/coverage.ec फ़ाइल में होता है। सटीक के लिए अपने प्रोजेक्ट फ़ोल्डर – satyajit

+0

में 'cover.ec' की खोज करने का प्रयास करें, लेकिन जब आप इसे फ़ायरबेस के साथ चलाते हैं तो यह आपकी स्थानीय मशीन पर नहीं होगा, है ना? मैं पूछ रहा हूं कि आप इसे अपनी स्थानीय मशीन पर फायरबेस से कैसे निकालते हैं? – spierce7

उत्तर

3

यह सब कुछ आवश्यक था जो एसडी कार्ड पर लिखने के लिए उचित अनुमति को सक्षम करने के लिए आवश्यक था।

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
AndroidManifest.xml में इस SO answer

इसके अलावा में की तरह

, सुनिश्चित करें कि सच testCoverageEnabled बनाने के इस माध्यम से डिबग

debug { 
      testCoverageEnabled true 
} 

के लिए एप्लिकेशन/build.gradle में सक्षम किया गया है post

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