使用Jacoco和Android Flavors的测试覆盖率报告:
让我们考虑一下名为“免费”和“付费”的口味
Step1 :在项目模块目录(默认为应用程序)中创建文件jacoco.gradle,其中存在build.gradle,它应该在build.gradle文件旁边 . 目录结构如下图所示
app> jacoco.gradle
Step 2 :在我们在步骤1中创建的文件中粘贴下面的代码,代码有自解释的注释要理解
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.7.5.201505241946"
}
project.afterEvaluate {
// Grab all build types and product flavors
def buildTypes = android.buildTypes.collect { type ->
type.name
}
def productFlavors = android.productFlavors.collect { flavor ->
flavor.name
}
// When no product flavors defined, use empty
if (!productFlavors) productFlavors.add('')
//iterate over the flavors
productFlavors.each {
productFlavorName ->
//iterate over build types like debug,release,prod etc.
buildTypes.each {
buildTypeName ->
//sourceName — e.g. freeDebug ,sourcePath — e.g. free/debug
def sourceName, sourcePath
if (!productFlavorName) {
sourceName = sourcePath = "${buildTypeName}"
} else {
sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
sourcePath = "${productFlavorName}/${buildTypeName}"
}
// testTaskName — e.g. testFreeDebugtest task that the coverage task depends on,
def testTaskName = "test${sourceName.capitalize()}UnitTest"
// Create coverage task of form 'testFlavorTypeCoverage' depending on 'testFlavorTypeUnitTest'
task "${testTaskName}Coverage" (type:JacocoReport, dependsOn: "$testTaskName") {
group = "Reporting"
description = "Generate Jacoco coverage reports on the ${sourceName.capitalize()} build."
classDirectories = fileTree(
dir: "${project.buildDir}/intermediates/classes/${sourcePath}",
excludes: [
'**/R.class',
'**/R$*.class',
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/BuildConfig.*',
'**/Manifest*.*'
]
)
def coverageSourceDirs = [
"src/main/java",
"src/$productFlavorName/java",
"src/$buildTypeName/java"
]
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
executionData = files("${project.buildDir}/jacoco/${testTaskName}.exec")
reports {
//enables and disable the type of file you need
xml.enabled = false
html.enabled = true
}
}
}
}
}
步骤3:在android studio终端下面运行命令来构建应用程序
./gradlew清洁组装
步骤4:on build sucessfull,运行以下命令生成测试报告(将字符串“testFreeDebugUnitTestCoverage”更改为您的特定flavor / build类型,例如对于付费版本命令将为./gradlew testPaidDebugUnitTestCoverage)
./gradlew testFreeDebugUnitTestCoverage
Step 5 :
它应该在终端给出成功消息,现在转到目录
>app > build > reports >jacoco >${testName} >look for html or xml file report file
Step 6: 现在您可以在浏览器中打开并查看html测试覆盖率文件
最好的运气!