我正在尝试使用jacoco设置测试覆盖率,但到目前为止我还没有成功。
在我的build.gradle中,我添加了:
apply plugin: 'jacoco'
(...)
buildTypes {
debug {
testCoverageEnabled true
}
(...)
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}
然后我使用以下代码运行JaCoCo测试报告:
./gradlew clean create<MyFlavor>DebugCoverageReport jacocoTestReport
我看到单元测试运行成功,但是当我打开测试报告时,位于:
<project>/build/reports/jacoco/jacocoTestReport/html/index.html
报告似乎是空的,因为报道为N / A,甚至没有显示项目包。
此外,如果我尝试在
打开覆盖文件<project>/build/jacoco/test<MyFlavor>DebugUnitTest.exec
使用Android Studio,所有课程报告的覆盖率均为0.0%。
我正在使用gradle 3.0.1
我做错了什么? 这与口味的使用有关吗?
答案 0 :(得分:1)
我也在与UnitTests和JaCoCo斗争。我通过使用不同的plugin解决了我的问题。
在您的根<form role="form" name="form">
<div class="form-group">
<select cam-variable-name="altneu" cam-variable-type="String">
<option value="ALT">Alt</option>
<option value="NEU">Neu</option>
</select>
</div>
</form>
添加:
<form role="form" name="form">
<div class="form-group">
<label for="neukundeId">Neukunde?</label>
<input type="checkbox" cam-variable-name="isNeu" cam-variable-type="Boolean" id="neukundeId" />
</div>
</form>
并在模块build.gradle
中应用插件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.10.0'
}
}
同步后你应该有新的gradle任务:
build.gradle
答案 1 :(得分:0)
我们设法找到了解决这个问题的方法。
看来,由于我们使用gradle风格,我们必须在classDirectories
行中添加风味。
这是我们当前的任务,有了这个改变:
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/<MyFlavor>/", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}