Comment puis-je obtenir un jacoco rapport de couverture à l'aide de Android plugin gradle 0.10.0 ou plus?
Je vais essayer d'obtenir un test de rapport de couverture à l'aide de Gradle Android plugin 0.10.2.
Mais je ne peux toujours pas obtenir un rapport de couverture après l'exécution de certains tests. (connectedAndroidTest).
mon principal du module de construire.gradle est :
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
testCoverageEnabled true
}
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
}
et la buildscript section du projet de build gradle est :
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.10.+'
}
}
Une fois que je lance un gradlew connectedAndroidTest
depuis le terminal, je peux trouver coverage-instrumented-classes
et code-coverage
dossier à l'intérieur de la build
dossier. Mais je ne trouve pas coverage
dossier dans le reports
dossier. (Seulement, je peux voir, c'est androidTests
dossier)
Est-il quelque chose qui manque pour arriver à un jacoco rapport de couverture?
Vous devez vous connecter pour publier un commentaire.
Sur des centaines de fois à la recherche de la réponse à l'obtention d'un rapport de couverture, j'ai enfin trouvé une réponse exacte ce que je veux.
De la ce blog, j'ai trouvé que
gradlew createDebugCoverageReport
crée la jacoco rapport de couverture.Également, à partir du plugin gradle le code source, le plugin utilise jacoco 0.6.2.201302030002 par défaut. (par conséquent, jacoco version de la définition n'est pas nécessaire si vous allez utiliser une version par défaut)
En résumé, le ESSENTIEL démarches pour obtenir une
jacoco
rapport de couverture avec Android plugin gradle sont:build.gradle
)testCoverageEnabled true
pour le type de construction que vous voulez (c'est à diredebug
)$ gradlew createDebugCoverageReport
ougradlew connectedCheck
pour obtenir unjacoco
rapport de couverture.Vous pouvez trouver votre couverture rapport à la
build/reports/coverage/{buildType}
. (c'est à direbuild/reports/coverage/debug
pour debug)(Ajouter multi-saveur cas de @odiggity commentaire)
Si votre projet utilise des multi-saveur de la configuration, de l'utilisation
create{flavorName}CoverageReport
à la place. Le rapport de couverture de seront générées àbuild/reports/coverage/{flavorName}/{buildType}
.Exemple pour la saveur krInternal avec debug type de construction:
./gradlew createKrInternalDebugCoverageReport
build/reports/coverage/krInternal/debug
Astuce :
Puisque vous ne pouvez obtenir un rapport de couverture avec le
emulator
etdevice with root permission
, vous obtiendrez le message d'erreur suivant après l'exécution d'une commande à la régulière(non-rootés) appareil:Travis-CI script de construction pour obtenir la couverture de code
Inclure ce bloc de construction.gradle, pour tous les modules (bibliothèque de l'échantillon, etc)
Ci-dessous est la
.travis-ci.yml
fichier./gradlew createDebugCoverageReport
j'obtiens les erreurs suivantes:error: package org.robolectric.annotation does not exist
eterror: package org.junit does not exist
. Comment puis-je ajouter ces 2 dépendances àorg.robolectric:robolectric:2.4
etjunit:junit:4.+
? J'ai ajouté sousdependencies { testCompile '..' }
mais qui semble fonctionner que pour les acutal tests.testCompile
enandroidTestCompile
. Certains changements ont été apportés depuis le plugin de la version 0.9.sourceSets { androidTest.setRoot('src/test') }
dans mon gradle fichier. Dois-je besoin de le changer en arrière pourandroidTest
alors?androidTest.java.srcDirs = ['src/androidTest/java', 'src/customizedDirName/java']
bien qu'en général il est recommandé de nom de votre test src dir queandroidTest
,androidTest{flavorName}
pour être conforme aux valeurs par défaut du système.gradlew createDebugCoverageReport
nécessite un appareil connecté qui je n'ai pas besoin, est-il un moyen de contourner cela? J'ai seulement besoin de la jacoco résultats, merci, BobcreateDebugCoverage
tâche avez-vous essayé l'exclusion de plusieurs classes à partir des rapports de couverture?src/test
et de créer un gradle tâche pour un rapport de couverture. Voir github.com/kunny/blog_samples/tree/master/Android/... pour savoir comment obtenir un rapport à partir d'une Unité(pas une instrumentation) de test.jacocoTestCoverageVerification
, mais l'habitude de code dans l'ensemble de l'Internet ne fonctionne pas et gradle ne sais pas. pouvez-vous m'aider? @TaehoKimJ'ai créé un l'open source du plugin pour que.
Racine de construire.gradle
Puis exécutez simplement
Ça va fonctionner JUnit tests et de vous donner la Jacoco sortie en xml et html du formulaire dans le répertoire de construction pour debug type de build.
Ont pour ajouter une réponse au lieu d'un commentaire, depuis ma réputation est inférieure à 50...
Ce que je veux compléter est:
Google a publié de nouveaux outils de construction de la fixation du méchant "exception verifyerror" (lien) question.
S'il vous plaît essayez de modifier votre mise en gradle pour utiliser les derniers outils de construction si vous rencontrez l "exception verifyerror" de l'émission. Par exemple,
Depuis le 21.0.0 outils de construction est buggé, veuillez utiliser une version supérieure 21.0.0. J'utilise 21.1.1.
Si vous souhaitez utiliser une version différente de celle par défaut, puis ajouter
à l'intérieur de la
android
balise dans votre applicationbuild.gradle
.Une façon de trouver le dernier numéro de version: de la recherche pour "org.jacoco:jacoco" sur JCenter.
gradlew createDebugCoverageReport
je ne reçois pas tous les rapports. Quel est le truc?Gradle déjà a un support intégré pour générer des rapports de couverture de tests et nous n'avons pas besoin de créer des configurations supplémentaires ou ajouter des plugins pour générer des tests de couverture du rapport. En gros, la seule chose que nous devons faire, est de mettre en
testCoverageEnabled
paramètretrue
dansbuild.gradle
fichier comme suit:Ensuite, nous pouvons exécuter la suite de Gradle tâche à partir de la CLI:
Sur Windows, nous pouvons l'exécuter comme ceci:
Tâche d'analyser le code de notre projet dans
/src/main/java/
annuaire et tests unitaires placé dans/src/androidTest/java/
répertoire.Après l'exécution de cette tâche, nous pouvons trouver la couverture de test, rapport dans le répertoire suivant du module:
Lorsque nous avons ouvert
index.html
fichier, nous pouvons voir le rapport visuel de la couverture de test, qui peut être affiché dans un navigateur web.Il semble que sur l'image ci-dessous.
article sur le test de rapport de couverture dans une application Android
http://blog.wittchen.biz.pl/test-coverage-report-for-android-application/