【问题标题】:SonarQube not finding Kotlin Junit5 testsSonarQube 没有找到 Kotlin Junit5 测试
【发布时间】:2020-08-25 10:36:39
【问题描述】:

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

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

这是 sonar-project.properties

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

我也加了这个

Gradle 是用 Kotlin-DSL 编写的。

【问题讨论】:

    标签: android kotlin sonarqube junit5


    【解决方案1】:

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

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

    所以你的build gradle(看这是 groovy dsl,但我会在 kotlin 中提供一个链接)看起来类似于以下代码 sn-p。这将自动生成所有内容

    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 报告

    【讨论】:

    • 我稍后再试,但似乎是正确的答案。我一直在研究更多,我最终也得出了这个结论。我现在的问题是 jacoco 向 Sonar 报告 XML 文件。正如你所说,使用 kotlin 似乎有点不同,没有 Jacoco kotlin
    • Jacoco 目前不支持 Kotlin 内联代码。在这里查看:github.com/jacoco/jacoco/issues/654
    猜你喜欢
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多