Intereting Posts
Рисование над представлением и все его дети Ошибки, выполняемые построителем «CDT Builder» при попытке создания OpenCV для образцов андроида Можно ли связать человека с twitter и facebook при разборе? Как сделать пакетный режим доступным для камеры Лучшая практика использования Sprites в игре с использованием AndEngine GLES2 Как прочитать содержимое сообщения нового в предстоящем сообщении в android? Национальная / региональная версия Dashboard для разработчиков Android Виджеты хостинга в андроид-пусковой установке Есть ли карта Android PCI? Как получить заказы на возврат Google? Ошибка: нестатический метод «findViewById (int)» не может ссылаться на статический контекст Условно установленная первая активность в Android Векторная графика в списке слоев на более старых версиях Android Внедрить список с разделителем раздела в android Android: могу ли я создать представление / холст, который не является прямоугольным, но, например, круглый?

Покрытие кода Jacoco в студии android

Я пытаюсь создать отчет о покрытии кода Jacoco. Я использовал AndroidTestCase для своих тестовых классов.

Я нашел использование testCoverageEnabled true и используя стандартную javascript по умолчанию android -студия по умолчанию jococo, ./gradlew connectedCheck или createDebugCoverageReport создать процент успешных / неудачных тестовых случаев, но нет отчета о покрытии.

Затем я попробовал jacoco {toolVersion "0.7.1.201405082137"} и выполнил задачу jacocoTestReport (тип: JacocoReport, dependsOn: "testDebug"). Я попытался изменить значение dependOn с помощью различных задач. В отчете показано 0 (ноль) тестового покрытия, что невозможно, потому что тестируется по меньшей мере половина всех классов.

За последние пару дней я соблюдал различные принятые ответы на переполнение стека. Результат отрицательный.

Мой файл градиента:

buildscript { repositories { mavenLocal() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } apply plugin: 'com.android.application' apply plugin: 'jacoco' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "test.gradle.com.myapplicationtestgradle" minSdkVersion 21 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile( 'proguard-android.txt'), 'proguard-rules.pro' } debug { testCoverageEnabled true } } jacoco { version "0.7.1.201405082137" } packagingOptions { exclude 'LICENSE.txt' } } jacoco { toolVersion "0.7.1.201405082137" } task jacocoTestReport(type:JacocoReport, dependsOn: "testDebug") { group = "Reporting" description = "Generate Jacoco coverage reports" // exclude auto-generated classes and tests def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', 'android/**/*.*'] def debugTree = fileTree(dir: "${project.buildDir}/intermediates/classes/debug", excludes: fileFilter) def mainSrc = "${project.projectDir}/src/main/java" sourceDirectories = files([mainSrc]) classDirectories = files([debugTree]) additionalSourceDirs = files([ "${buildDir}/generated/source/buildConfig/debug", "${buildDir}/generated/source/r/debug" ]) executionData = fileTree(dir: project.projectDir, includes: ['**/*.exec', '**/*.ec']) reports { xml.enabled = true xml.destination = "${buildDir}/jacocoTestReport.xml" csv.enabled = false html.enabled = true html.destination = "${buildDir}/reports/jacoco" } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('junit:junit:4.11') { exclude module: 'hamcrest-core' } } 

Solutions Collecting From Web of "Покрытие кода Jacoco в студии android"

Я вижу, что у вас уже есть работа, однако есть более простой способ получения данных об исполнении Unit Test. В последнее время я тоже изучал этот вопрос, но сегодня я написал полную запись.

В моей ситуации я не хотел создавать дополнительную задачу Gradle, поскольку я хотел, чтобы отчет был сгенерирован как часть существующего рабочего процесса. Я также не хотел явно добавлять плагин Jacoco, поскольку Google уже дублирует задачи Jacoco Ant для отчетов о охвате тестов Instrumentation.

В дополнение к настройке свойств android.jacoco.version и buildTypes.debug.testCoverageEnabled , я добавил следующие аргументы testDebug для генерации данных выполнения:

 project.afterEvaluate { def append = "append=true" def destFile = "destfile=$buildDir/outputs/code-coverage/connected/coverage.ec" testDebug.jvmArgs "-javaagent:$buildDir/intermediates/jacoco/jacocoagent.jar=$append,$destFile" createDebugCoverageReport.dependsOn testDebug } 

Это добавляет данные выполнения Unit Test в файл покрытия, созданный connectedAndroidTest , поэтому ваш отчет отражает как контрольные тесты, так и тесты единиц, а не каждый вариант отдельно.

Обратите внимание, что connectedAndroidTest перезаписывает файл покрытия, учитывайте это при создании отчета. Если задача testDebug не имеет каких-либо изменений, и вы запустите createDebugCoverageReport , это отразится только на вашем контрольном тестировании. Итак, внесите изменения в свои тесты единиц. touch командной touch Linux может быть полезно здесь, хотя я еще не пробовал.

Gradle уже имеет встроенную поддержку для создания отчетов по охвату тестирования, и нам не нужно создавать какие-либо дополнительные конфигурации или добавлять какие-либо плагины для создания отчета по охвату тестирования. В основном, единственное, что нам нужно сделать, это установить параметр testCoverageEnabled в true в файле build.gradle следующим образом:

 android { buildTypes { debug { testCoverageEnabled = true } } } 

Затем мы можем выполнить следующую задачу Gradle из CLI:

 ./gradlew createDebugCoverageReport 

В Windows мы можем выполнить его следующим образом:

 gradlew.bat createDebugCoverageReport 

Задача будет анализировать код нашего проекта в каталоге /src/main/java/ и модульных тестах, помещенных в /src/androidTest/java/ . После выполнения этой задачи мы можем найти отчет по охвату тестирования в следующем каталоге модуля:

 /build/outputs/reports/coverage/debug/ 

Когда мы открываем файл index.html , мы можем видеть визуальный отчет из охвата тестирования, который можно просмотреть в веб-браузере.

Это выглядит как на изображении ниже.

Введите описание изображения здесь

Я написал статью об отчете о тестировании в приложении для Android и опубликовал ее в своем блоге некоторое время назад. Если вас интересует эта тема, вы можете прочитать ее по адресу:

http://blog.wittchen.biz.pl/test-coverage-report-for-android-application/

Обновление (охват тестирования устройства для тестов Robolectric)

Если вы хотите создать отчет о тестировании из модульных тестов, написанных с помощью Robolectric, и подготовить отчет о покрытии теста с помощью Jacoco , Travis CI и Codecov.io , пожалуйста, взгляните на новую статью в своем блоге:

http://blog.wittchen.biz.pl/test-coverage-report-with-travis-ci-for-robolectric-tests-on-android/

Я полностью удалил студию Android, android sdk, gradle. Затем переустановите все. Сегодня я полностью удалил андроид-студию, android sdk, gradle. Затем переустановите все. После этого я просто добавил в приложение build.gradle.

 debug { testCoverageEnabled true } 

Затем я запускаю ./gradlew connectedChec. Все работает отлично. Студия Android по умолчанию Jacoco отлично работает для меня. Я думаю, что также можно создать jacocoTestReport Task, а затем создать покрытие кода. Я не знаю, почему студия gradle and android не работала ранее.

Я исследовал правильный способ получения объединенного отчета о покрытии кода с помощью Jacoco, вы можете проверить его здесь: https://gist.github.com/ultraon/54cca81ca159ed0a4a9ebf62e89c26ba

Я использовал AndroidStudio 2.2.2 с Gradle 3.2 и Android Gradle Plugin 2.2.2