SonarQube 没有找到 Kotlin Junit5 测试

SonarQube not finding Kotlin Junit5 tests

我正在尝试在 Github 中设置示例 android 工作室项目,它还集成了连接到 SonarQube 的 CI。

我在使用 sonarQube 时遇到问题,因为它说没有应用测试覆盖率。但是,在 kotlin 和 Juni5 中有,但是无法设置 sonar.tests 来识别它。

这是 sonar-project.properties

测试 运行 在本地和 CI 构建项目分支时都很好。

我也添加了这个

Gradle 是用 Kotlin-DSL 编写的。

如果您使用 gradle,则无需在 sonar-project.properties 中定义来源和测试。 gradle sonarqube 任务将根据您的源集自动拾取它们。

我认为您缺少的是生成覆盖率的工具,sonarqube 不会为您生成覆盖率数据。 SonarQube 在 Java 中使用,例如。 JaCoCo 所以你还需要为此应用一个插件。

所以你的 build gradle(看,这是 groovy dsl,但我会在 kotlin 中提供一个 link)看起来像下面的代码片段。这将自动生成所有内容

plugins {
    id 'java'
    id 'jacoco'
    id 'eclipse' // optional (to generate Eclipse project files)
    id 'idea' // optional (to generate IntelliJ IDEA project files)
    id "org.sonarqube" version "2.8"
}

repositories {
    jcenter()
}

dependencies {
    testImplementation('org.junit.jupiter:junit-jupiter:5.6.0')
}

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

sonarqube {
    properties {
        /*
        UPDATE SECTION START
        Please fill in your data
         */
        property "sonar.projectName", "SonarCloud Github Actions with gradle"
        property "sonar.projectKey", "aepfli_SonarCloud-GitHubActions-Gradle-example"
        property "sonar.organization", "aepfli"
        /*
        UPDATE SECTION END
         */
        property "sonar.host.url", "https://sonarcloud.io"

    }
}

jacocoTestReport {
    reports {
        xml.enabled = true
    }
}

或者,如果您正在寻找 kotlin DSL 中的示例,我可以从 JUnit Pioneer 中推荐这个示例。

我仍然不确定 JaCoCo 对 kotlin 的支持有多好。如果 Kotlin 世界中有像 JaCoCo 这样的不同工具,您也可以尝试生成 XML 报告并通过 属性 sonar.coverage.jacoco.xmlReportPaths 提供此 xml 报告 Sonarqube doc