Cobertura de código para sonar de las pruebas de android usando gradle
Tengo que configurar el informe de cobertura de código en mis pruebas de Android y luego publicarlos en sonar. He leído que no hay herramientas y complementos que pueden hacerlo. Estoy utilizando guiones de gradle e intento el plugin de jacoco, cobertura, pero ningunos resultados. ¿Es alguna forma de resolverlo? También traté de hacer como aquí Gradle cobertura de código jacoco – Luego publicar / mostrar en Jenkins
- ¿Por qué el Sonar no lee mis resultados de JUnit XML en Jenkins?
- Plugin de SonarQube con Android Studio
- Cómo configurar la configuración de SONAR para el complemento de sonar intellij para Android Studio?
- Cobertura de código en Android Studio con Sonar & Gradle
- Publicar los resultados de Lint a Sonar usando Gradle
- Cambiar el perfil de calidad en SonarQube.com
- Sonar, Gradle y Android devuelven 0 número
- Analiza el proyecto Android Studio (Gradle) con Sonarqube
- El análisis del proyecto falla después de actualizar a SonarQube 5.0
- La cobertura general de Sonarqube no coincide con la cobertura de informes de jacoco
- Android gradle construir que la cobertura de código para pruebas robolectric
- Configuración adecuada para "sonar.libraries" en un moderno proyecto Gradle Android
- Análisis de Android Project con Lint y SonarQube
Ejemplo de build.gradle con cobertura de código y sonar
apply plugin: 'com.android.application' android { compileSdkVersion 20 buildToolsVersion '20.0.0' defaultConfig { applicationId 'com.example.coverage' minSdkVersion 11 targetSdkVersion 19 versionCode 1 versionName '1.0' testHandleProfiling true testFunctionalTest true } buildTypes { debug { testCoverageEnabled true } release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { apply plugin: 'sonar-runner' } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/services/javax.annotation.processing.Processor' exclude 'LICENSE.txt' } } sonarRunner { sonarProperties { property "sonar.projectKey", "coverage-example" property "sonar.projectName", "Coverage Example" property "sonar.projectVersion", "1.0" property "sonar.sources", "src/main/java" property "sonar.binaries", "build" property "sonar.test", "src/androidTest/java" property "sonar.profile", "Sonar way" property "sonar.language", "java" property "sonar.sourceEncoding", "UTF-8" property "sonar.dynamicAnalysis", "reuseReports" property "sonar.junit.reportsPath", "build/outputs/reports/coverage/debug" property "sonar.cobertura.reportPath", "build/outputs/reports/coverage/debug/cobertura.xml" property "sonar.java.coveragePlugin", "cobertura" property "sonar.host.url", "http://localhost:9099" } }
Ahora corre
Gradlew clean assembleDebug createDebugCoverageReport
Ahora podrá ver un xml que contiene el informe de cobertura de código en este directorio
App / build / outputs / informes / coverage / debug / report.xml
Ahora antes de ejecutar la tarea de sonar, tenemos que convertir el archivo report.xml que sonar puede leer, se utilizará esto en python script que realiza la conversión de este archivo al formato que el plugin sonar cobertura puede utilizar.
Vincular el guión a github
python cover2cover.py app/build/outputs/reports/coverage/debug/report.xml src/main/java > app/build/outputs/reports/coverage/debug/cobertura.xml && cp app/build/outputs/androidTest-results/connected/* app/build/outputs/reports/coverage/debug/
Ahora corre
gradlew sonarRunner
- Ocultar grupo sin hijos – ExpandableListView
- Reconocimiento de actividad Api No funciona en algunos dispositivos