首页 > 解决方案 > SonarQube 没有找到 Kotlin Junit5 测试

问题描述

我正在尝试在 Github 中设置一个示例 android studio 项目,该项目还集成了连接到 SonarQube 的 CI。

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

这是sonar-project.properties

在此处输入图像描述

构建项目分支时,测试在本地和 CI 中运行良好。

我也添加了这个

在此处输入图像描述

Gradle 是用 Kotlin-DSL 编写的。

标签: androidkotlinsonarqubejunit5

解决方案


如果您使用的是 gradle,则无需在sonar-project.properties. gradle sonarqube 任务将根据您的源集自动获取它们。

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

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

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基于Sonarqube doc的属性提供此 xml 报告


推荐阅读