Skip to content

Instantly share code, notes, and snippets.

@sud007
Created January 16, 2024 06:46
Show Gist options
  • Save sud007/fb0e8123e25e971e12044263eb9b3ad7 to your computer and use it in GitHub Desktop.
Save sud007/fb0e8123e25e971e12044263eb9b3ad7 to your computer and use it in GitHub Desktop.
Sample Jacoco Gradle : 2022
apply plugin: 'jacoco'
ext {
coverageExclusions = [
'**/src/main/res/**',
'**/R.class',
'**/*Activity*',
'**/*response*',
'**/*request*',
'**/*Util*',
'**/*Adapter*',
'**/*Fragment*',
'**/*StringFactory*',
'**/*ImageFactory*',
'**/R$*.class',
'**/*$InjectAdapter.*',
'**/*$ModuleAdapter.*',
'**/Dao*.*',
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/*MembersInjector*.*',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Companion*.*',
'**/*$Lambda$*.',
'**/*Factory*.',
'**/*$Builder*',
'**/*$Parcelable*.*',
'**/*Test*.*',
"**/android/databinding/**",
"**/androidx/databinding/*",
'**/com/myApp/android/generated/callback/*',
'**/widgets/*',
'**/me/**/*.*',
'**/org/**/*.*',
'**/org/**/*.*',
'**/*$Result.*', /* filtering `sealed` and `data` classes */
'**/*$Result$*.*',/* filtering `sealed` and `data` classes */
'**/KtorClientProvider*',
'**/commonMain/**/sqldelight/**',
'**/commonMain/**/api/**',
'**/*StringFactory*',
'**/*ImageFactory*',
'**/KtorClientProvider*',
'**/commonMain/**/request/**',
'**/commonMain/**/response/**',
'**/commonMain/**/model/**',
'**/commonMain/**/di/**',
'**/commonMain/**/MR/**',
'**/commonMain/**/factory/**',
'**/commonMain/**/helper/**',
'**/commonMain/**/arch/**',
'**/commonMain/**/repository/**',
'**/commonMain/**/models/**',
'**/commonMain/**/sqldelight/**',
'**/commonMain/**/validation/**',
'**/commonMain/**/impl/**',
'**/commonMain/**/command/**',
'**/*Repository',
'**/*Dto',
'**/*Api',
'**/*Impl',
'**/*ResponseModel',
'**/*DetailsModel',
'**/*DetailModel',
'**/*AnalyticsEvents*',
'**/*Logger*',
'**/*SettingsStore*',
'**/*Koin*',
'**/*SingleEvent*',
'**/*ApiConstants*',
'**/*CustomHttpLogger*',
'**/*ErrorCodes*',
'**/*FailureHandler*',
'**/*NetworkHelper*',
]
}
jacoco {
toolVersion "0.8.8"
reportsDirectory = layout.buildDirectory.dir('reports')
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
jacoco.excludes = ['jdk.internal.*']
// see related issue https://github.com/gradle/gradle/issues/5184#issuecomment-457865951
}
tasks.withType(Test) {
finalizedBy jacocoTestReport // report is always generated after tests run
}
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.required.set(true)
html.required.set(true)
}
def javaTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: coverageExclusions)
def mainSrc = "/src/commonMain/kotlin"
def kotlinTree = fileTree(dir: "${buildDir}/tmp/kotlin-classes/debug", excludes: coverageExclusions)
additionalSourceDirs.from = files(mainSrc)
sourceDirectories.from = files([mainSrc])
classDirectories.from = files([kotlinTree,javaTree])
executionData.from = files("$buildDir/jacoco/testDebugUnitTest.exec")
}
@sud007
Copy link
Author

sud007 commented Jan 16, 2024

Added

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment