【问题标题】:How to ignore inner static classes in Jacoco when using Gradle使用 Gradle 时如何忽略 Jacoco 中的内部静态类
【发布时间】:2019-10-29 09:51:23
【问题描述】:

我知道如何忽略在他们自己的.java 文件中定义的类,但不知道如何忽略内部类。

例如,我有 A 类和 B 类嵌套:

class A {
    ...

    static class B {
        ...
    }
}

jacocoTestReport 当我想用这种语法在jacoco.gradle 文件中忽略它们时,会不断检查覆盖率(从这篇文章中学到:How to ignore inner/nested classes with JaCoCo?):(setFrom 部分适用于 Gradle 的更高版本,其中@987654327 @ 已弃用)

apply plugin: "jacoco"

jacoco {
    toolVersion = "0.8.3"
}

jacocoTestReport {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: [
                            "com/example/xxx/*",
                            "com/example/xxx/A\$.*B*"
                    ])
        }))
    }
}

$必须转义,而在帖子中不需要因为我使用Gradle时他使用Maven)

那么,我怎么能忽略这个内部类呢?

【问题讨论】:

    标签: java gradle jacoco


    【解决方案1】:

    经过几次尝试和失败,我终于找到了答案。似乎命名模式遵循已编译的 Java 类命名约定,如另一篇文章中所述,并且将不需要外部类和内部类之间的.。所以,它应该像A$B。并且,可能有一些.class 干扰(我的猜测),所以我添加了A$B*(对于其他普通类,最后一个* 不需要)。

    这样就变成了:

    "com/example/xxx/A\$B*"
    

    我希望有一些关于这种排除模式的文档。还没有。

    【讨论】:

    • 这似乎对我不起作用,你能举个例子说明你是怎么做到的吗?
    • 您好,使用模式即可;也许你有一些简单的回购让我调试?只是 github 中的一个示例项目会很好。 (并且通过简单地创建一个示例项目可以解决您的问题,我的个人经验)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2019-10-09
    • 1970-01-01
    • 2018-03-18
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多