2016-11-21 2 views
7

Basierend auf dieser Dokumentation - https://developer.android.com/studio/test/command-line.html#AMOptionsSyntax ist es möglich, Code-Coverage-Ergebnisse von Firebase Lab zurück zu erhalten. Einige Leute in # test-lab auf firebase-community.slack.com sind in der Lage, es zum Laufen zu bringen, aber nach ein paar Versuchen treffe ich immer noch eine Wand.So erhalten Sie Code-Coverage-Berichte von Google Firebase für Android Espressotests

Ich bin in der Lage, einen kombinierten Code Abdeckung Bericht von Jacaco und Emma durch folgende this guide zu bekommen, so ist nichts falsch mit meinem lokalen Setup aber problematisch, wenn Sie versuchen, Argumente zu gcloud cmd Zeile um Abdeckung Nummern zu fragen und es spricht Emma-Berichterstattung.

Wesentliches, wenn ich diesen Befehl lokal ausgeführt

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 

ich die Berichterstattung Bericht erwarten erzeugt werden, aber ich dies in dem instruments.results diesen

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 

Und logcat sagt Datei:

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 

Ich kann bei Bedarf weitere Informationen geben.

+0

aktiviert wahr ist testCoverageEnabled Wie Erhalten Sie die Code-Coverage-Datei auf Ihrem lokalen Computer? – spierce7

+0

Es ist normalerweise in der App/Build/Outputs/ /jacoco/coverage.ec Datei. Für genau einen versuchen Sie eine Suche nach 'coverage.ec' in Ihrem Projektordner – satyajit

+0

Richtig, aber wenn Sie es mit Firebase laufen, wird es nicht dort auf Ihrem lokalen Rechner sein, richtig? Ich frage, wie bekommen Sie es von Firebase auf Ihre lokale Maschine? – spierce7

Antwort

3

Es stellte sich heraus, dass nur die Berechtigung zum Schreiben auf SD-Karte aktiviert werden musste.

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

in AndroidManifest.xml wie in diesem SO answer

Stellen Sie außerdem sicher in app/build.gradle für Debug

debug { 
      testCoverageEnabled true 
} 

aus diesem Medium post

Verwandte Themen