java - 为什么在进行单元测试时我的 sonarqube 的覆盖率为 0%?
问题描述
所以我正在使用 SonarQube 来改进我的代码。问题是我一直得到 0% 的覆盖率。我认为我的 build.gradle 文件不正确,但我不确定这是问题所在。谁能帮我检查一下我的 build.gradle 是否正确,如果这不是问题,我会继续寻找还有什么问题。
我的 build.gradle:
plugins {
id 'org.springframework.boot' version '2.4.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id "org.sonarqube" version "3.2.0"
id 'jacoco'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '15'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
implementation('io.jsonwebtoken:jjwt:0.2')
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compile 'junit:junit:4.12'
implementation 'org.modelmapper:modelmapper:2.4.1'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.eclipse.jgit:org.eclipse.jgit:5.4.2.201908231537-r'
/**
* JUnit jupiter with mockito.
*/
testCompile group: 'org.mockito', name: 'mockito-junit-jupiter', version: '2.19.0'
testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
testCompile group: 'org.springframework.security', name: 'spring-security-test', version: '5.1.6.RELEASE'
}
sonarqube{
properties{
property 'sonarjava.source', '1.8'
property 'sonar.java.coveragePlugin', 'jacoco'
property 'sonar.jacoco.reportPaths', 'build/reports/jacoco/test/jacocoTestReport.xml'
property 'sonar.java.test.binaries'
}
}
test {
useJUnitPlatform()
}
提前致谢!
解决方案
关键是 SonarQube 扫描仪必须知道 jacoco 数据文件所在的位置。基于属性的开发普遍存在的烦恼是,您不太可能会看到一条错误消息,指出您没有设置正确的属性。这就是在这种情况下发生的事情。
这在一定程度上取决于您使用的 SonarQube 版本,但您设置的属性“sonar.jacoco.reportPaths”从未打算指向 Jacoco XML 文件。正确的属性是“sonar.coverage.jacoco.xmlReportPaths”。
推荐阅读
- python - 将 CSV 重构为 Pandas DataFrame
- mysql - MYSQL SUM(IF) 按名称分组,但有些名称想求和
- elasticsearch - 带分组的 Elasticsearch 查询
- mysql - 从仅包含 sequelize 关系的表中正确获取数据
- c# - 在没有客户端密码的情况下以编程方式读取 Azure App Insights 日志?
- python - 突出显示某些条形图标签
- python - PermissionError pip install
- html - 当图像不在居中容器中时,如何将元素从其容器中拉出到浏览器的左侧或右侧边缘
- html - 具有超过 1 个表单的母版页?
- xaml - How use the styles merged?