当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot中,有没有一种简单的方法可以使用Java注释将类排除在测试覆盖范围之外?

宗冠宇
2023-03-14

我有一个(gradle kotlin)spring boot项目,其中有几个DTO、配置类、常量等,我不想在测试覆盖率分析期间对它们进行分析。

有没有方便的Java符号可以用?

共有2个答案

郎健柏
2023-03-14

这就是我最终的工作。不得不以一种非常粗糙的方式编写一些自定义过滤逻辑,但它成功了。

向上投票@Min Hyung Hong的答案,让我走上了正确的道路。

建筑格雷德尔。kts

tasks {
    withType<KotlinCompile<KotlinJvmOptions>> {
        kotlinOptions.freeCompilerArgs = listOf("-Xjsr305=strict")
        kotlinOptions.jvmTarget = "1.8"
    }

    withType<JacocoReport> {
        reports {
            xml.isEnabled = false
            csv.isEnabled = false
            html.destination = file("$buildDir/jacocoHtml")
        }

        afterEvaluate {
            val filesToAvoidForCoverage = listOf(
                    "/dto",
                    "/config",
                    "MyApplicationKt.class"
            )
            val filesToCover = mutableListOf<String>()
            File("build/classes/kotlin/main/app/example/core/")
                    .walkTopDown()
                    .mapNotNull { file ->
                        var match = false
                        filesToAvoidForCoverage.forEach {
                            if (file.absolutePath.contains(it)) {
                                match = true
                            }
                        }
                        return@mapNotNull if (!match) {
                            file.absolutePath
                        } else {
                            null
                        }
                    }
                    .filter { it.contains(".class") }
                    .toCollection(filesToCover)

            classDirectories = files(filesToCover)
        }
    }
}
於乐语
2023-03-14

你说你在用kotlin和gradle。所以我假设您正在使用jacoco进行测试覆盖。

这是jacoco的一个例子。

jacocoTestReport {
    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['**/*Application**'])
        })
    }
}
 类似资料:
  • 问题内容: doIt函数将打印“ dad”。有没有办法让它打印“儿子”? 问题答案: 是。但是就变量而言,它会被覆盖(将新值赋予变量。将新定义赋予函数是Override)。 在父类的块中使用时,该值将得到反映 如果变量是静态的,则在初始化时使用静态块更改其值, 否则更改构造函数。 你还可以稍后在任何块中更改该值。它将反映在超一流

  • 问题内容: 嗨,我想使用WMI类来查找应用程序和产品信息。但是问题是我想使用Java或任何脚本语言(如python,javascript或perl)。我听说过JWMI,这可能是一个选择。有人可以帮我吗??? 问题答案: JavaScript和Java不是一回事。 JavaScript Windows脚本宿主(WSH)下提供了JavaScript。有了它,访问WMI相当容易: jWMI(Java)

  • 问题内容: 我正在尝试将字符串转换为。我不是在尝试解析主机名:字符串是ipv4地址。有工作吗?还是我必须手动解析它? 问题答案: 这样做更好,因为无论传递什么字符串,它都不会进行DNS查找。

  • 我希望用ASCII降序来排序,这样我就可以得到结果是"d",是"c",是"b",是"a"。 在java中有没有一种简单的方法可以做到这一点?

  • 问题内容: 我们的代码的一部分是时间敏感的,我们需要保留一些内容,然后在30-60秒之内释放它,等等,我们可以 我刚刚实现了时间接口,并且在测试过程中使用了时间接口的存根实现,类似于此golang- nuts讨论 。 但是,在多个站点中称为,这意味着我们需要传递一个变量来跟踪我们实际睡了多少时间。 我想知道是否存在另一种在全球范围内存根的方法。也许进行系统调用来更改系统时钟? 也许我们可以编写自己

  • Go的范围可以在地图和切片上迭代,但我想知道是否有一种方法可以在一系列数字上迭代,比如: 或者有没有一种方法来表示Go中的整数范围,就像Ruby对类范围所做的那样?