LardinoisJosse
LardinoisJosse

Reputation: 403

Sonarqube gives 0% coverage on spring boot gradle project

So I am working with SonarQube and I keep getting stuck. My coverage is 0% while it should not be 0% (I made sure with an simple test that always should run correctly and covers at least one method).

I am reading a lot of different gradle.build files on the internet, but I can't find one that works for me. Also I think the problem is that sonarqube can't find certain files, but I can't find a working directory of someone which I can compare with my own.

Gradle.build

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.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'
    }
}
test {
    useJUnitPlatform()
}

This is the folder where my test reports are in (I think you will need this to help me):

test report directory

Binary directory

The build directory:

Build directory

The jacoco test directory

jacoco test directory

Can anyone help me with my problem? If you want to see directories or other files, just ask and add them to the post. Thanks in advance!

Upvotes: 1

Views: 1512

Answers (2)

LardinoisJosse
LardinoisJosse

Reputation: 403

The answer was in a directory that I had not shown. My project was missing the Jacocoreportxml file. Once I added this with the gradle build jacocoreportxml command in my terminal it worked!

Upvotes: 0

Nayan Hajratwala
Nayan Hajratwala

Reputation: 370

you need to make sure jacoco runs before sonarqube, so add something like:

tasks["sonarqube"].dependsOn("jacocoTestReport")

Also, side note, compile is deprecated, so use implementation and testImplementation instead.

Upvotes: 1

Related Questions