2015-03-11 5 views
5

Ich konnte Code Coverage auf keinem meiner Android-Projekte arbeiten.Coverage-Bericht sagt keine Abdeckung auf Android mit Gradle

Um die Dinge zu vereinfachen habe ich ein neues Projekt erstellt (ausgewählte leere Aktivität). Eine neue Dienstprogrammklasse wurde dem Projekt in src/main/java hinzugefügt.

Ich habe dann einen Unit Test dafür in src/androidTest/Java erstellt.

Die Gradle-Datei wurde aktualisiert, um die Abdeckung zu aktivieren.

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.michaelkrussel.coverageapp" 
     minSdkVersion 15 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 

    jacoco { 
     version "0.7.1.201405082137" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debug { 
      testCoverageEnabled true 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
} 

lief ich die Tests dann createDebugCoverageReport mit ./gradlew. Der Komponententest zeigt, dass der Test, den ich erstellt habe, bestanden wurde, aber der Abdeckungsbericht meldet keine Abdeckung.

Ich gehe davon aus, dass ich entweder etwas in der Gradle-Datei verpasse oder nicht die richtige Gradle-Aufgabe, aber ich kann nicht herausfinden, was.

+0

versuchen In DefaultConfig hinzufügen {testApplicationId „your.package.test“} –

+1

@anderson_acs Versuchte es hinzuzufügen, und ich habe immer noch eine leere coverage.ec Datei und der Bericht 0 Berichterstattung. –

Antwort

0

Ich verwende diese Konfiguration in meinem Projekt und funktioniert gut!

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.1" 

    defaultConfig { 
     applicationId "br.com.acs.app" 
     minSdkVersion 18 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
     testApplicationId "br.com.acs.app.test" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debug { 
      testCoverageEnabled true 
     } 
    } 

    packagingOptions { 
     exclude 'LICENSE.txt' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 

    androidTestCompile 'junit:junit:4.11' 
    androidTestCompile('com.android.support.test:testing-support-lib:0.1') { 
     exclude group: 'junit' 
    } 
} 
+0

Ich sehe, dass Sie Junit 4 einschließen. Führen Sie Standard-Java-Komponententests aus oder führen Sie Android-instrumentierte Tests aus? –

+0

ja! Ich führe instrumentierte Tests durch. –

+2

Gut zu bewältigen, dass unsere Gradle-Datei mein Problem immer noch nicht behob, aber mir gesagt hat, dass es kein Konfigurationsproblem war. Ich beschloss, die Tests auf einem anderen Gerät auszuführen, und alles begann zu arbeiten. Das Gerät, das nicht funktionierte, war ein Nexus S4 Mini mit Android 4.4.2. Ich habe auch einen Emulator mit Android 4.4.2 versucht, und es hat funktioniert. Die Probleme scheinen also mein spezifisches Gerät zu sein (nicht sicher was). Danke, dass du mir ein funktionierendes Beispiel gezeigt hast. Ich habe auch von der Test-Support-Lib erfahren, die cool aussieht. –