android - SonarQube 没有找到 Kotlin Junit5 测试
问题描述
我正在尝试在 Github 中设置一个示例 android studio 项目,该项目还集成了连接到 SonarQube 的 CI。
我在使用 sonarQube 时遇到问题,因为它说没有应用测试覆盖率。然而,在 kotlin 和 Juni5 中有,但没有办法设置 sonar.tests来识别它。
这是sonar-project.properties
构建项目分支时,测试在本地和 CI 中运行良好。
我也添加了这个
Gradle 是用 Kotlin-DSL 编写的。
解决方案
如果您使用的是 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 报告
推荐阅读
- python - Pandas DataFrame.itertuples() 自动将对象 dtypes 转换为日期和时间 dtypes
- html - THEAD 与打印页眉上的页面内容重叠
- c++ - 使用 Boost Spirit X3 解析 ipv4 地址
- javascript - Alpine with Spruce : ReferenceError: $store is not defined
- pine-script - 关于 strategy.entry 函数的“id”
- java - Spring data jpa events:如何仅在特定字段更改时才进行事件?
- javascript - Javascript数组操作以返回元素的交集
- unity3d - unity - 与刚体错误一起跳跃
- javascript - google 自动播放限制的解决方法
- c# - .NET 如何做出构建时决策