2016-11-21 65 views
7

Bu dokümantasyonda - https://developer.android.com/studio/test/command-line.html#AMOptionsSyntax kod kayıt sonuçlarını Firebase laboratuvarından almak mümkündür. Firebase-community.slack.com adresindeki # test-lab'deki bazı kişiler çalışmayı başarabiliyorlar, ancak birkaç denemeden sonra hala duvara çarpıyorum.Android için google Firebase'den kod kapsama raporları nasıl alınır? Espresso testleri

'u takip ederek jacaco ve emma'nın birleşik kod kapsamı raporunu alabilmem için yerel kurulumumda yanlış bir şey yok, ancak gcloud cmd satırına argüman vermeye çalışırken sorunlu olduğunu ve kapsama numaralarını sormayı sorun emma kapsama alanı. Ben yerel ben kapsama raporun oluşturulmasını bekliyorum

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 

bu komutu çalıştırmak ancak

Esasen, ben

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 

dosya instruments.results bu olsun Ve logcat bu diyor ki:

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 

Gerekirse daha fazla bilgi verebilirim.

+0

nasıl Kod kapsamı dosyasını yerel makinenize mi alıyorsunuz? – spierce7

+0

Genellikle app/build/outputs//jacoco/coverage.ec dosyasındadır. Tam olarak, proje klasörünüzde – satyajit

+0

sağdaki "scope.ec" için bir arama yapmayı deneyin, ancak bunu firebase ile çalıştırdığınızda yerel makinenizde olmayacak, değil mi? Firebase'inizi yerel makinenize nasıl çıkarabileceğinizi soruyorum. – spierce7

cevap

3

SD kartta yazma için uygun izni etkinleştirmek için gereken tüm çıktılar çıktı.

Ayrıca, bu SO answer

gibi AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

, emin gerçek testCoverageEnabled yapmak bu ortamdan Hata ayıklamak

debug { 
      testCoverageEnabled true 
} 

için app/build.gradle etkindir post