Покрытие кода для сонара от андроидных тестов с использованием градуировки

Я должен настроить отчет о покрытии кода на своих тестах на Android, а затем опубликовать их в гидролокаторе. Я прочитал, что нет никаких инструментов и плагинов, которые могут это сделать. Я использую скрипты gradle, и я пытаюсь использовать jacoco plugin, cobertura, но никаких результатов. Это какие-то способы его решения? Также я попытался сделать так, как здесь, охват кодов Gradle jacoco – Затем опубликуйте / покажите в Jenkins

Пример build.gradle с покрытием кода и гидролокатором

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" } } 

Теперь запустите

Gralew clean assembleDebug createDebugCoverageReport

Теперь вы сможете увидеть xml, содержащий отчет покрытия кода в этом каталоге

приложение / сборки / выходы / отчеты / освещение / отлаживать / report.xml

Теперь, прежде чем мы запустим задачу сонара, нам нужно преобразовать файл report.xml, который может прочитать сонар, он будет использовать это в скрипте python, который выполняет преобразование этого файла в формат, который может использовать его сонарник cobertura.

Свяжите сценарий с 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/ 

Теперь запустите

 gradlew sonarRunner 
Intereting Posts
Почему я должен «переопределить метод суперкласса» с помощью @Override? ОШИБКА: В <объявлении-стиль> MenuView, неспособный найти атрибут android: preserveIconSpacing Невозможно установить .apk после декодирования и восстановления (Apktool, Apkstudio) Андроид: реакция рынка Затруднение жизненного цикла с изменением ориентации в другой деятельности Добавьте android: name = "something" в тег приложения AndroidManifest.xml из Cordova plugin.xml Недостатки использования библиотеки совместимости Android на Honeycomb Исключение Null Pointer при использовании SearchView с AppCompat Невозможно решить Symbol Google API Client в Android Studio Android: отображение изображения в режиме просмотра изображений с помощью SimpleAdapter Интеграция OSMDroid с фрагментами Ошибка при отправке сообщения Toast: невозможно создать обработчик внутри потока, который не вызвал Looper.prepare () Одно и то же имя атрибута Android в двух библиотеках, имя столбца Невозможно установить значение DSCP в приложении Android. Плагин ADT не отображается в Eclipse