Kotlin 如何使用build.gradle.kts将覆盖率报告(JaCoCo)添加到基于kotest的测试中?
我在服务器端使用Kotlin,我想添加测试覆盖率(通过使用JaCoCo,但可以是任何其他开源)。 目前,我还没有找到任何文档来解释如何基于kotest启用/添加覆盖率报告到kotlin项目,而kotest实际上是有效的。 (是的,我试过了) build.gradle.kts:Kotlin 如何使用build.gradle.kts将覆盖率报告(JaCoCo)添加到基于kotest的测试中?,kotlin,build.gradle,jacoco,gradle-kotlin-dsl,kotest,Kotlin,Build.gradle,Jacoco,Gradle Kotlin Dsl,Kotest,我在服务器端使用Kotlin,我想添加测试覆盖率(通过使用JaCoCo,但可以是任何其他开源)。 目前,我还没有找到任何文档来解释如何基于kotest启用/添加覆盖率报告到kotlin项目,而kotest实际上是有效的。 (是的,我试过了) build.gradle.kts: import Libraries.coroutines import Libraries.koTest import Libraries.koTestCore import Libraries.mockk import L
import Libraries.coroutines
import Libraries.koTest
import Libraries.koTestCore
import Libraries.mockk
import Libraries.testcontainers
import Libraries.testcontainersPostgres
plugins {
java
`kotlin-dsl` version "1.3.5" apply false
kotlin("jvm") version Versions.kotlin_version
kotlin("plugin.serialization") version Versions.kotlin_version apply false
id("com.diffplug.gradle.spotless") version Plugins.spotless
id("com.palantir.docker") version Plugins.docker apply false
id("com.palantir.docker-run") version Plugins.docker apply false
id("com.google.protobuf") version Plugins.protobuf apply false
id("org.flywaydb.flyway") version Plugins.flyway apply false
}
allprojects {
group = "my-app"
version = "2.0"
apply(plugin = "kotlin")
apply(plugin = "com.diffplug.gradle.spotless")
repositories {
mavenCentral()
jcenter()
}
tasks {
compileKotlin {
dependsOn(spotlessApply)
kotlinOptions {
jvmTarget = "11"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "11"
}
}
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
tasks.withType<Test> {
useJUnitPlatform()
maxParallelForks = 1
environment("ENV", "test")
}
afterEvaluate {
project.configurations.forEach {
// Workaround the Gradle bug resolving multiplatform dependencies.
if (it.name.contains("Proto")) {
it.attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_RUNTIME))
}
}
}
}
subprojects {
spotless {
kotlin {
ktlint().userData(mapOf("disabled_rules" to "no-wildcard-imports"))
trimTrailingWhitespace()
endWithNewline()
}
}
dependencies {
implementation(coroutines)
testImplementation(koTest)
testImplementation(koTestCore)
testImplementation(mockk)
testImplementation(testcontainers)
testImplementation(testcontainersPostgres)
}
configurations {
all {
resolutionStrategy.setForcedModules("org.apache.httpcomponents:httpclient:4.5.9")
}
}
}
import Libraries.coroutines
导入库.koTest
导入库.koTestCore
导入库.mock
导入Libraries.testcontainers
导入库。TestContainerPostgres
插件{
JAVA
`kotlin dsl`版本“1.3.5”应用错误
kotlin(“jvm”)版本。kotlin_版本
kotlin(“plugin.serialization”)版本。kotlin\u版本应用错误
id(“com.diffplug.gradle.spotless”)版本Plugins.spotless
id(“com.palantir.docker”)版本Plugins.docker apply false
id(“com.palantir.docker run”)版本Plugins.docker apply false
id(“com.google.protobuf”)版本Plugins.protobuf apply false
id(“org.flywaydb.flyway”)版本Plugins.flyway apply false
}
所有项目{
group=“我的应用程序”
version=“2.0”
应用(plugin=“kotlin”)
应用(plugin=“com.diffplug.gradle.spotless”)
存储库{
mavenCentral()
jcenter()
}
任务{
科特林{
德彭森(一尘不染)
科特洛普斯酒店{
jvmTarget=“11”
}
}
compileTestKotlin{
科特洛普斯酒店{
jvmTarget=“11”
}
}
}
爪哇{
sourceCompatibility=JavaVersion.VERSION\u 11
targetCompatibility=JavaVersion.VERSION_11
}
tasks.withType{
useJUnitPlatform()
maxParallelForks=1
环境(“环境”、“测试”)
}
后评价{
project.configurations.forEach{
//解决Gradle缺陷的方法是解决多平台依赖关系。
if(it.name.contains(“Proto”)){
attributes.attribute(Usage.Usage\u属性,objects.named(Usage::class.java,Usage.java\u运行时))
}
}
}
}
子项目{
一尘不染{
科特林{
ktlint().userData(将“禁用的_规则”映射为“无通配符导入”))
trimTrailingWhitespace()
endWithNewline()
}
}
依赖关系{
实施(协同程序)
测试实施(koTest)
测试实施(koTestCore)
测试实施(mockk)
测试实现(testcontainers)
测试实施(TestContainerPostgres)
}
配置{
全部{
resolutionStrategy.setForcedModule(“org.apache.httpcomponents:httpclient:4.5.9”)
}
}
}
任何帮助都会很好。提前感谢。以我的经验,Jacoco和Kotest的互操作非常好。我正在使用它,我需要做的是:
插件{
杰科科
//剩下的插件
}
//你的身材,就像以前一样
你可以检查一个房间
为了验证它是否有效,例如,您可以将Jacoco生成的数据提供给服务,例如。
首先,以XML格式生成报告:
tasks.jacoTestReport{
报告{
xml.isEnabled=true
}
}
然后使用Codecov.io服务获取并分析结果:
bash根据我的经验,Jacoco和Kotest的互操作非常好。我正在使用它,我需要做的是:
插件{
杰科科
//剩下的插件
}
//你的身材,就像以前一样
你可以检查一个房间
为了验证它是否有效,例如,您可以将Jacoco生成的数据提供给服务,例如。
首先,以XML格式生成报告:
tasks.jacoTestReport{
报告{
xml.isEnabled=true
}
}
然后使用Codecov.io服务获取并分析结果:
bash