我試圖生成Jacoco代碼覆蓋率報告。 我已經使用AndroidTestCase爲我的測試類。Jacoco代碼覆蓋在Android Studio中
我一直在使用testCoverageEnabled真實,使用默認的Android -Studio默認jacoco, ./gradlew connectedCheck或createDebugCoverageReport 創建全成的百分比/失敗測試案例,但沒有覆蓋報告發現。
然後我嘗試了jacoco {toolVersion「0.7.1.201405082137」}和任務jacocoTestReport(類型:JacocoReport,dependsOn:「testDebug」)。我試圖用各種任務來改變dependsOn值。該報告顯示0(零)測試覆蓋率,這是不可能的,因爲至少有一半的類都經過測試。
我跟隨在過去幾天的堆棧溢出的各種公認的答案。結果是消極的。
我gradle這個文件:
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'
}
}
只是引用什麼似乎是獲得任何類型的覆蓋報告生成的規範方法,請參閱[this](http://stackoverflow.com/q/23795595/269300)這樣的問題 - 任何人誰在獲取'createDebugCoverageReport'時遇到問題。 – 2015-03-19 20:11:33
我已經看到了接受的答案。我認爲。你對儀器測試和單元測試都是正確的。我確實需要看看(testDebug.jvmArgs)。非常感謝你解釋一些有用的信息。 – user1365169 2015-03-20 15:29:28
這似乎並沒有爲我合併這兩份報告。它只包括來自android測試的覆蓋,而不是單元測試。我使用多種口味,但是我相應地更改了'project.afterEvaluate'。任何想法? – 2015-04-09 07:58:18