Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JaCoCo Gradle-不包括类别和;覆盖包括_Android_Unit Testing_Gradle_Jacoco_Jacoco Plugin - Fatal编程技术网

Android JaCoCo Gradle-不包括类别和;覆盖包括

Android JaCoCo Gradle-不包括类别和;覆盖包括,android,unit-testing,gradle,jacoco,jacoco-plugin,Android,Unit Testing,Gradle,Jacoco,Jacoco Plugin,我正试图在我的项目中完善我的代码覆盖率,并希望排除任何视图类(因为它们未经测试/可测试),但包括任何视图模型类。。。但我似乎无法让通配符过滤器合作,这是全部或全部 def excludedPatterns = [ //... other stuff '**/*Fragment*.*', '**/*Activity*.*', '**/*Adapter*.*', '**/*View*.*', // <-- t

我正试图在我的项目中完善我的代码覆盖率,并希望排除任何
视图
类(因为它们未经测试/可测试),但包括任何
视图模型
类。。。但我似乎无法让通配符过滤器合作,这是全部或全部


def excludedPatterns = [
        //... other stuff

        '**/*Fragment*.*',
        '**/*Activity*.*',
        '**/*Adapter*.*',

        '**/*View*.*', // <-- this line is excluding classes ending w/ ViewModel

        '**/*ViewState*.*',
        '**/*ViewHolder*.*',
]

task codeCoverageReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."

    reports {
        html.enabled true
    }

    def debugTree = fileTree(
            dir: "$project.buildDir/tmp/kotlin-classes/debug",
            excludes: excludedPatterns
    )
    classDirectories.from = files([debugTree])

    def mainSrc = "$project.projectDir/src/main/java"
    sourceDirectories.from = files([mainSrc])

    executionData.from = fileTree(dir: project.buildDir, includes: [
            'jacoco/testDebugUnitTest.exec',
            'outputs/code-coverage/connected/*coverage.ec'
    ])
}

def排除模式=[
//…其他东西
“***片段***”,
“***活动**”,
“***适配器**”,
“***视图**”,//您可以使用

例如

src/main/java/View.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/main/java/ViewModel.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/main/java/Example.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/test/java/ExampleTest.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
build.gradle

apply plugin: 'java'
apply plugin: 'jacoco'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13'
}

jacocoTestReport {
    classDirectories.setFrom(
        fileTree(dir: "build/classes/java/main")
            .filter({file -> !file.name.contains('View') || file.name.contains('ViewModel')})
    )
}
执行

gradle clean test jacocoTestReport
使用Gradle 6.2.1将在目录
build/reports/jacoco/test/html/
中生成以下报告,该报告不包含
视图
,但包含
视图模型
示例

您可以使用

例如

src/main/java/View.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/main/java/ViewModel.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/main/java/Example.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
src/test/java/ExampleTest.java

class View {}
class ViewModel {}
class Example {}
import org.junit.Test;

public class ExampleTest {
    @Test
    public final void test() {
    }
}
build.gradle

apply plugin: 'java'
apply plugin: 'jacoco'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13'
}

jacocoTestReport {
    classDirectories.setFrom(
        fileTree(dir: "build/classes/java/main")
            .filter({file -> !file.name.contains('View') || file.name.contains('ViewModel')})
    )
}
执行

gradle clean test jacocoTestReport
使用Gradle 6.2.1将在目录
build/reports/jacoco/test/html/
中生成以下报告,该报告不包含
视图
,但包含
视图模型
示例


thx!要测试一下,如果有效,将返回报告并接受答案…这应该放在根目录还是应用程序/one中?另外,我目前被困在Gradle 5.X上,这是6.X独有的功能吗?nv,找到了。使用属性语法,我可以简单地转到
classDirectories.from=files([debugTree])。过滤器({file->file.name.contains('ViewModel')})
thx!要测试它,将返回报告并接受答案,如果它有效…这应该放在根Gradle还是应用程序/one中?另外,我目前被困在Gradle 5.X上,这是6.X独有的功能吗?nv,找到了。使用属性语法,我可以简单地转到
classDirectories.from=files([debugTree]).filter({file->file.name.contains('ViewModel')})