Skip to content

Instantly share code, notes, and snippets.

executionData = files("${project.buildDir}/jacoco/${testTaskName}.exec")
@francescocervone
francescocervone / jacoco-android.gradle
Created October 12, 2018 18:09
Source directories
sourceDirectories = files(
"${project.projectDir}/src/main/java",
"${project.projectDir}/src/$flavorName/java",
"${project.projectDir}/src/$buildTypeName/java",
"${project.projectDir}/src/$variantName/java",
"${project.projectDir}/src/main/kotlin",
"${project.projectDir}/src/$flavorName/kotlin",
"${project.projectDir}/src/$buildTypeName/kotlin",
"${project.projectDir}/src/$variantName/kotlin",
)
@francescocervone
francescocervone / jacoco-android.gradle
Last active October 11, 2018 21:39
ClassDirectories
def androidGeneratedClasses = [
'**/R.class',
'**/R$*.class',
'**/BR.class',
'**/BR$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
'**/databinding'
apply plugin: "jacoco"
jacoco {
toolVersion "0.8.1"
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled true
}
}
@francescocervone
francescocervone / jacoco-android.gradle
Created October 11, 2018 21:31
Variant iteration
project.afterEvaluate {
def variantPropertyName
if (project.android.hasProperty("applicationVariants")) {
variantPropertyName = "applicationVariants"
} else if (project.android.hasProperty("libraryVariants")) {
variantPropertyName = "libraryVariants"
} else {
return
}
project.android.properties[variantPropertyName].all { variant ->
@francescocervone
francescocervone / jacoco-android.gradle
Last active October 11, 2018 21:32
Initialization
apply plugin: 'jacoco'
jacoco {
toolVersion "0.8.1"
}
apply plugin: 'jacoco'
jacoco {
toolVersion project.jacocoPlugin
}
project.afterEvaluate {
def variantPropertyName
if (project.android.hasProperty("applicationVariants")) {
variantPropertyName = "applicationVariants"
def variantName = variant.name
def flavorName = variant.flavorName
def buildTypeName = variant.buildType.name
def jacocoTaskName = "jacoco${variantName.capitalize()}TestReport"
def testTaskName = "test${variantName.capitalize()}UnitTest"
def jacocoTask = project.tasks.create(name: jacocoTaskName, type: JacocoReport) {
group = 'reporting'
description 'Generates Jacoco coverage reports for JVM tests.'
// Task configuration here...
@francescocervone
francescocervone / PresenterTest.kt
Last active April 20, 2018 22:04
Testing MVP - SaveFavoritePresenterTest
@Test
fun saveFavorite() {
val expectedItem = Item()
presenter.favoriteIconClick(expectedItem)
verify(repository).save(expectedItem)
}
@francescocervone
francescocervone / FavoritesRepository.kt
Created April 20, 2018 21:38
Testing MVP - FavoritesRepository
interface FavoritesRepository {
fun observe(): Observable<Item>
fun save(item: Item)
fun delete(item: Item)
fun getAll(): List<Item>
fun contains(id: String): Boolean
}